Home>Article>Web Front-end> Detailed explanation of several methods of splitting an array into even blocks in JavaScript

Detailed explanation of several methods of splitting an array into even blocks in JavaScript

青灯夜游
青灯夜游 forward
2021-04-27 18:48:05 2919browse

This article will show you how to split an array into even blocks in javascript? It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.

Detailed explanation of several methods of splitting an array into even blocks in JavaScript

#Arrays are one of the most commonly used structures in JavaScript programming, which is why it’s important to understand its built-in methods.

In this article, we look at how to split an array into n-sized chunks in JS.

Specifically, we mainly study two methods:

  • Use theslice()method andforloop

  • Use thesplice()method andwhileloop

Use the slice() method Split an array into even chunks

slice()method is the simplest way to extract chunks of an array, or slice it into chunks:

The slice(start, end)method returns a new array object, which is a shallow copy of the original array determined by begin and end (including begin, excluding end). The original array is not changed.

Note: Bothstartandendcan be negative integers, which simply means they are enumerated from the end of the array.-1is the last element of the array,-2is the second to last, and so on...

Therefore, to split the list or array into For even chunks, we use theslice()method

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

Running result:

[[ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10 ]]

In the above code, we loop through the array and press eachchunkSizeSlice it, breakingarrinto small pieces of size3. On the last iteration, there is only one element left (10), so it forms a block by itself. [Recommended learning:javascript advanced tutorial]

Use the splice() method to split the array into even blocks

Even ifsplice() Themethod looks similar to theslice()method, but its usage and side effects are quite different. Let’s take a closer look:

// splice 做以下两件事: // 1. 删除从 startIdx 开始的 deleteCount 元素 // 2. 将提供的新元素(newElem1, newElem2…)插入到myArray中,以索引startIdx开始 // 该方法的返回值是一个包含所有已删除元素的数组 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]

Let’s see this in action through a code example:

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

Running results:

[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ] ]

Here, we usewhileLoop through the array. On each iteration, we perform a splice operation and add each chunk to the resulting array until there are no more elements in the original array (arr.length> 0).

A very important thing to note is that splice()will change the original array. For example,slice()creates a copy of the original array, so there will be no changes to the original array.

Summary

In this article, we introduced a few simple ways to split a list into chunks in JS. Along the way, we learned how to use several built-in array methods, such asslice()andsplice().

Original address: https://stackabuse.com/how-to-split-an-array-into-even-chunks-in-javascript/

Author: Abhilash Kakumanu

Translation address: https://segmentfault.com/a/1190000039833328

For more programming-related knowledge, please visit:Introduction to Programming! !

The above is the detailed content of Detailed explanation of several methods of splitting an array into even blocks in JavaScript. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete