TL; DR;
Array.prototype.slice.call(nodelist).filter
Metoda slice () zwraca tablicę. Ta zwrócona tablica jest płytką kopią kolekcji (NodeList),
więc działa szybciej niż Array.from ()
Więc działa tak szybko jak Array.from ()
Elementy oryginalnej kolekcji są kopiowane do zwracanej tablicy w następujący sposób:
- W przypadku odniesień do obiektów (a nie rzeczywistego obiektu) wycinek kopiuje odniesienia do obiektów do nowej tablicy. Zarówno oryginalna, jak i nowa tablica odnoszą się do tego samego obiektu. Jeśli obiekt, do którego istnieje odniesienie, ulegnie zmianie, zmiany będą widoczne zarówno dla nowej, jak i oryginalnej tablicy.
- W przypadku łańcuchów, liczb i wartości logicznych (nie obiektów typu String, Number i Boolean) wycinek kopiuje wartości do nowej tablicy. Zmiany ciągu, liczby lub wartości logicznej w jednej tablicy nie wpływają na drugą tablicę.
Krótkie wyjaśnienie dotyczące argumentów
Array.prototype.slice (beginIndex, endIndex)
- przyjmuje opcjonalne argumenty beginIndex i endIndex. Jeśli ich nie podano, plasterki używa beginIndex == 0, więc wyodrębnia wszystkie elementy z kolekcji
Array.prototype.slice.call (namespace, beginIndex, endIndex)
- przyjmuje obiekt jako pierwszy argument. Jeśli używamy kolekcji jako obiektu, dosłownie oznacza to, że wywołujemy metodę slice bezpośrednio z tego obiektu namespace.slice ()
babel
, po[...coll]
prostu wywołaArray.from(coll)
wszystko, co nie jest plikiemArray
.