Czy biblioteka Lodash nie wspiera backtick?

0

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)}`);
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.

1

Co to znaczy nie działa?

0

@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' ] ]

2

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).

3
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).

1 użytkowników online, w tym zalogowanych: 0, gości: 1