Úvod
Pole jsou jednou z nejpoužívanějších struktur v programování v JavaScriptu, a proto je důležité znát jejich vestavěné metody jako zadní část kapsy.
V tomto tutoriálu se podíváme na to, jak rozdělit pole na části n
velikost v JavaScript .
Konkrétně se podíváme na dva přístupy:
- Pomocí
slice()
metoda afor
smyčka - Pomocí
splice()
metoda awhile
smyčka
Rozdělení pole na sudé části pomocí slice() Metoda
Nejjednodušší způsob, jak extrahovat část pole, nebo spíše jej rozdělit, je slice()
metoda:
Poznámka: Oba start
a end
mohou být záporná celá čísla, což pouze značí, že jsou vyčíslovány od konce pole. -1
je posledním prvkem pole, -2
být předposledním a tak dále...
Pole vrácené slice()
vrátí mělkou kopii, což znamená, že všechny odkazy v původním poli budou zkopírovány tak, jak jsou, a nevyhradí paměť pro úplně nové objekty.
Chcete-li tedy rozdělit seznam nebo pole na stejné části, použijte slice()
metoda:
function sliceIntoChunks(arr, chunkSize) {
const res = [];
for (let i = 0; i < arr.length; i += chunkSize) {
const chunk = arr.slice(i, i + chunkSize);
res.push(chunk);
}
return res;
}
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(sliceIntoChunks(arr, 3));
Spuštěním výše uvedeného kódu získáte následující výstup:
[[ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10 ]]
Ve výše uvedeném kódu rozdělíme arr
na menší kusy o velikosti 3
, iterováním polem a jeho rozřezáním každých chunkSize
. V poslední iteraci bude pouze jeden prvek (10
) vlevo, který bude muset vytvořit svůj vlastní kus.
Rozdělení pole na sudé části pomocí splice() Metoda
I když splice()
metoda může vypadat podobně jako slice()
metoda, její použití a vedlejší účinky jsou velmi odlišné. Pojďme se na to podívat blíže:
// Splice does the following two things:
// 1. Removes deleteCount elements starting from startIdx (in-place)
// 2. Inserts the provided new elements (newElem1, newElem2...) into myArray starting with index startIdx (also in-place)
// The return value of this method is an array that contains all the deleted elements
myArray.splice(startIdx, deleteCount, newElem1, newElem2...)
let arrTest = [2, 3, 1, 4]
let chunk = arrTest.splice(0,2)
console.log(chunk) // [2, 3]
console.log(arrTest) // [1, 4]
Podívejme se na to v akci na příkladu kódu:
Zdarma e-kniha:Git Essentials
Prohlédněte si našeho praktického průvodce učením Git s osvědčenými postupy, průmyslově uznávanými standardy a přiloženým cheat sheetem. Přestaňte používat příkazy Google Git a skutečně se naučte to!
function spliceIntoChunks(arr, chunkSize) {
const res = [];
while (arr.length > 0) {
const chunk = arr.splice(0, chunkSize);
res.push(chunk);
}
return res;
}
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(spliceIntoChunks(arr, 2));
Spuštění tohoto kódu vede k:
[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ] ]
Zde používáme while
smyčka pro procházení pole. V každé iteraci provedeme operaci spojování a vložíme každý kus do výsledného pole, dokud v původním poli nezůstanou žádné další prvky (arr.length > 0
).
Velmi důležitou věcí je poznamenat, že splice()
změní původní pole. kde jako slice()
vytvoří kopii původního pole, takže v tom původním nedojde k žádné změně.
Závěr
V tomto článku jsme prošli několika snadnými způsoby, jak rozdělit seznam na stejné části v JavaScriptu. Přitom jsme se naučili pracovat s několika vestavěnými metodami pole, jako je slice()
a splice()
.