有没有办法用JavaScript将数组的块保存到新数组中?

有没有办法用JavaScript将数组的块保存到新数组中?,javascript,arrays,Javascript,Arrays,我有一个数组: [“元素1”、“元素2”、“元素3”、“元素4”、“元素5”、“元素6”] 在新数组中循环并保存相同大小的块: [“元素1”、“元素2”]、[“元素3”、“元素4”]、[“元素5”、“元素6”] 对于该过程的每次迭代,我希望将初始数组的非切片部分保存在一个新数组中,以便该过程的每次迭代为我提供两个数组: 区块: [“元素3”、“元素4”] 以及初始数组的“其余部分”: [“元素1”、“元素2”、“元素5”、“元素6”] 目前,我可以在循环初始数组时获取块,方法如下: for (i

我有一个数组:

[“元素1”、“元素2”、“元素3”、“元素4”、“元素5”、“元素6”]

在新数组中循环并保存相同大小的块:

[“元素1”、“元素2”]、[“元素3”、“元素4”]、[“元素5”、“元素6”]

对于该过程的每次迭代,我希望将初始数组的非切片部分保存在一个新数组中,以便该过程的每次迭代为我提供两个数组:

区块:

[“元素3”、“元素4”]

以及初始数组的“其余部分”:

[“元素1”、“元素2”、“元素5”、“元素6”]

目前,我可以在循环初始数组时获取块,方法如下:

for (i = 0, j = array.length; i < j; i += chunk) {
   temparray = group_array.slice(i, i + chunk);
}
for(i=0,j=array.length;i

但是我无法通过每次迭代获取数组的剩余部分,有没有办法用JavaScript实现这一点?

尝试尽可能简单地编写它:3

首先,您将获得块的开始索引和结束索引。For循环将其索引增加2,因为您希望块的长度为2个元素。 然后你把那块切下来。接下来,您将获得阵列的两个静止部分。首先从索引0开始,在块开始时结束。第二部分从块的末尾开始,到最后一个数组元素结束

const arr=[
“元素1”,
“元素2”,
“元素3”,
“元素4”,
“元素5”,
“元素6”,
];
函数自定义切片(arr){
对于(设i=0;i',chunk);
常数rest1=arr.slice(0,startIdx);
常数rest2=arr.slice(endIdx,arr.length);
常数rest=rest1.concat(rest2);
log('rest->',rest);
}
}

自定义切片(arr)这样您就可以使用Javascript拼接(i,n)函数将数组内容从索引i移除到i+n。此方法从数组本身调用并更改该数组,因此您需要复制初始数组,然后在此arr上执行操作


const startArr = ["Element1", "Element2", "Element3", "Element4", "Element5", "Element6"];
let tmpSubArr;
let tmpWithoutSlicedArr;
let chunk = 1;
for (i = 0, j = startArr.length; i < j; i += chunk) {
   tmpWithoutSliceArr = [...startArr]; // This copies starting array and then removing unwanted content
   tmpWithoutSliceArr.splice(i, chunk + 1);
   tmpSubArr = startArr.slice(i, i + chunk);
}


常量startArr=[“元素1”、“元素2”、“元素3”、“元素4”、“元素5”、“元素6”];
让我们一起去吧;
让TMP超越许可证;
设chunk=1;
对于(i=0,j=startArr.length;i
您可以获取当前区块索引范围之外的所有元素。例如,如果当前范围为
2
5
,则您需要索引超出该范围的所有内容。使用回调的第二个参数很容易做到这一点:

const group_数组=[“Element1”、“Element2”、“Element3”、“Element4”、“Element5”、“Element6”];
常量块=2;
for(设i=0,j=group_array.length;iindex=chunkEnd);
log(“tempArray”,tempArray);
console.log(“restArray”,restArray);

}
切片后,
组数组
是您的剩余数组。@Ava,这不是真的
group_array
不受
slice
的影响@Ava:只有在他使用时才受影响。@Ava我不想
splice()
数组,因为我想在数组中保留原始数据以备下次迭代使用。@VLAZ是的,但这只会给我当前块后面任何粗体块的剩余部分,在原始数组中没有任何可能在它前面的块。是的,只是添加了它。