Działa:
const array = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(_.chunk([...array], 2));
Nie działa:
const array = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(`Jakiś tekst ${_.chunk([...array], 2)}`);
Działa:
const array = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(_.chunk([...array], 2));
Nie działa:
const array = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(`Jakiś tekst ${_.chunk([...array], 2)}`);
Jak może nie wspierać backtick, skoro backtick jest na poziomie samego języka?
Tu raczej chodzi o to, że w pierwszym przypadku przekazujesz wynikową tablicę bezpośrednio do console.log (i np. przeglądarka ma szansę to fajnie wyświetlić), a w drugim przypadku używasz template literals (czyli tych backtików), więc konwertuje się ona do stringa zanim dojdzie w ogóle do console.log (więc przeglądarka nie będzie świadoma tego, czy jest tam tablica, obiekt, tylko będzie widzieć string).
BTW ten fragment nie ma wiele sensu:
[...array]
bo rozciągasz tablicę tylko po to, żeby ją umieścić z powrotem z tablicy.
Wystarczyłoby samo array
. No chyba, że ci zależy na zrobieniu kopiii tablicy.
@LukeJL: Dlaczego ...array nie ma sensu? Wtedy nie działa mi metoda tak jak powinna.
const arrayChunk = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(_.chunk([arrayChunk], 2)); // [ [ [ 'a', 'b', 'c', 'd', 'e', 'f' ] ] ]
const arrayChunk = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(_.chunk([...arrayChunk], 2)); // [ [ 'a', 'b' ], [ 'c', 'd' ], [ 'e', 'f' ] ]
Bez spread operator nie łączy mi w pary po 2 tak jak określiłem.
@Patryk27 Bo wygląda tak
const array = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(`Jakiś tekst ${_.chunk([...array], 2)}`); // Jakiś tekst a,b,c,d,e,f
A powinno chyba tak: Jakiś tekst [ [ 'a', 'b' ], [ 'c', 'd' ], [ 'e', 'f' ] ]
Czyli działa :-)
const array = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(array);
console.log(`${array}`);
console.log(array + "");
W pierwszym przypadku console.log()
rozumie, że otrzymuje tablicę i wyświetla ją ładnie; w pozostałych zachodzi automatyczna konwersja tablicy na ciąg znaków, która - domyślnie - w przybliżeniu działa tak jak .join(',')
.
Na przyszłość: nigdy nie pisz suchego "nie działa" (dla każdego znaczy to coś innego) + próbuj zminimalizować swój przykład (zauważ, że koniec końców problem nie jest w żaden sposób powiązany z lodashem).
PanKrakers napisał(a):
@LukeJL: Dlaczego ...array nie ma sensu? Wtedy nie działa mi metoda tak jak powinna.
const arrayChunk = ['a', 'b', 'c', 'd', 'e', 'f']; console.log(_.chunk([arrayChunk], 2)); // [ [ [ 'a', 'b', 'c', 'd', 'e', 'f' ] ] ]
Ale nie chodziło mi, żebyś pakował nazwę zmiennej w nawiasy kwadratowe, tylko, że równie dobrze możesz wywalić nawiasy kwadratowe w ogóle.
Załóżmy, że masz tablicę [10, 20, 30, 40]
, jeśli dasz trzy kropki, to JS jakby "odpakowuje" każdy element. Można tego użyć np. do kopiowania elementów jednej tablicy i do wrzucenia do drugiej. I to właśnie robisz. Kopiujesz tablicę, ale kopia jest taka sama, więc równie dobrze mógłbyś w tym przypadku po prostu przekazać tę tablicę bez kopiowania (i tym sposobem kod będzie bardziej przejrzysty):
const arr = [10, 20, 30, 40, 50, 60, 70];
console.log(_.chunk(arr, 2)); // [ [ 10, 20 ], [ 30, 40 ], [ 50, 60 ], [ 70 ] ]
(zaznaczyłem "w tym przypadku", bo owszem, istnieją sytuacje, kiedy kopia tablicy jest konieczna).
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.