稍微修改一下就可以将数组分割成块

Split array in chunks with a slight modification

本文关键字:就可以 数组 分割 一下 修改      更新时间:2023-09-26

问题很简单。我有一个数组,类似

let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    maxChunkLength = 3;

我需要将其拆分为多个数组,以获得以下内容:

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

请注意,块的最后一个元素应该是它旁边块的第一个元素

有人知道最好的方法吗?

,此功能可能对您有效

function splitArray(array, chunk){      
    var i,j, rslt = [];
    chunk = chunk - 1;
    for (i=0,j=array.length; i<j; i+=chunk) {
        rslt.push(array.slice(i,i+chunk +1));
    }
    return rslt;
}

示例

splitArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3); //[[1, 2, 3], [3, 4, 5], [5, 6, 7], [7, 8, 9], [9, 10]]

这大约是接受答案的两倍快。

function chunk(arr, chunkSize) {
    var curr = [], result = [], i, j;
    for (i=0, j=arr.length; i<j; i++) {
        curr.push(arr[i]);        
        if (curr.length === chunkSize) {
            result.push(curr);
            curr = [arr[i]];
        }
    }    
    if (curr.length !== chunkSize) {     
        result.push(curr);
    }
    
    return result;
}
document.write(JSON.stringify(chunk([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3)));

这应该可以工作,

var arr = [1,2,3,4,5,6,7,8];
var el1 = 0, el2 = 0, el3 = 0;
var result = [];
var splitLength = 3;
for(var i = 0; i < arr.length; i += (splitLength -1) ) {
    var tempArr = [];
    for(var j = 0; j < splitLength && arr[i+j]; j++) {
        tempArr.push(arr[i+j]);
    }
    result.push(tempArr);
}
console.log("[" + result.join("]'n[") + "]");

这对你有用吗?

var originalArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var maxChunkLength = 3
var newArray = [];
for (var i = 0; i < originalArray.length; maxChunkLength += 2) {
    var tempArray = [];
    for (var j = i; j < i+maxChunkLength; j++) {
        if (typeof originalArray[j] !== "undefined") {
            tempArray.push(originalArray[j]);
        } 
    }
newArray.push(tempArray);
tempArray = [];  
}