Jak rozdělit pole na sudé části v JavaScriptu

Ú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:

  1. Pomocí slice() metoda a for smyčka
  2. Pomocí splice() metoda a while 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() .