Вступление
Массивы - одна из наиболее часто используемых структур в программировании на JavaScript, поэтому важно знать их встроенные методы, как заднюю часть кармана.
В этом руководстве мы рассмотрим, как разбить массив на части n
в
JavaScript .
В частности, мы рассмотрим два подхода:
- Использование метода
slice()
и циклаfor
- Используя
splice()
метод иwhile
цикл
Разделение массива на четные части с помощью метода slice ()
Самый простой способ извлечь кусок массива или, скорее, разрезать его, -
это метод slice()
slice(start, end)
- возвращает часть вызванного массива междуstart
иend
индексами.
Примечание: start
и end
могут быть отрицательными целыми
числами, что просто означает, что они перечисляются с конца массива.
-1
- последний элемент массива, -2
- предпоследний и так далее ...
Массив, возвращаемый slice()
возвращает неглубокую копию, что
означает, что любые ссылки в исходном массиве будут просто скопированы
как есть и не будут выделять память для совершенно новых объектов.
Итак, чтобы разделить список или массив на четные части, давайте
воспользуемся методом slice()
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));
Выполнение приведенного выше кода дает следующий результат:
[[ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10 ]]
В приведенном выше коде мы разбиваем arr
на более мелкие фрагменты
размером 3
, выполняя итерацию по массиву и разрезая его на каждый
chunkSize
. На последней итерации останется только один элемент ( 10
), который должен будет составить отдельный кусок.
Разделение массива на четные блоки с помощью метода splice ()
Хотя метод splice()
может показаться похожим на метод slice()
, его
использование и побочные эффекты сильно отличаются. Рассмотрим
подробнее:
// 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]
Давайте посмотрим на это в действии на примере кода:
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));
Выполнение этого кода дает:
[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ] ]
Здесь мы используем while
цикл для обхода массива. arr.length > 0
каждый фрагмент в результирующий массив до тех пор, пока в исходном
массиве не останется элементов (arr.length> 0).
Очень важно отметить, что splice()
изменяет исходный массив. где,
поскольку slice()
создает копию исходного массива, поэтому в исходном
массиве не будет никаких изменений.
Заключение
В этой статье мы рассмотрели несколько простых способов разбить список
на равные части в JavaScript. При этом мы узнали, как работать с
несколькими встроенными методами массива, такими как slice()
и
splice()
.