问题描述
我想将数组的内容分成 4 份,为此我首先需要知道每个分割后的数组集的内容是什么,为此我使用了 Math.ceil。
results = ['a','b','c','d','e','f','g','h']; #lenght is 8
let half = Math.ceil(results.length / 4) # half is 2
let whole = [] #i want to insert the spliced value into this array
let j = 0;
let x
for (i = 0; i < 4; i++) {
console.log("j:" + j)
console.log("half: " + half)
x = results.splice(j,half)
console.log(x)
j = j + half;
}
j:0
half: 2
[ 'a','b' ] #this is correct
j:2
half: 2
[ 'e','f' ] #this is wrong,it should be ['c','d']
j:4
half: 2
[] #this is wrong,should be ['e','d']
j:6
half: 2
[]#also wrong,should be ['f',]
当我在 for 循环之外测试它时,它工作正常,使用索引 0,2 - 2,2 - 4,2 -6,2。 可能是什么错误?
解决方法
Splice 方法更改数组的内容(通过删除、替换或添加)。您应该使用 slice 结尾直到 i * 2 + half
results = ["a","b","c","d","e","f","g","h"]; // #lenght is 8
let half = Math.ceil(results.length / 4); // # half is 2
let whole = []; //#i want to insert the spliced value into this array
let j = 0;
let x;
for (i = 0; i < 4; i++) {
// change the end so that it will take next 2 element pos dynamically
const end = i * 2 + half;
x = results.slice(j,end);
j = j + half;
whole.push(x);
}
console.log(whole);