我收到以下错误
“未捕获的TypeError:无法读取未定义的属性'push'”
当我尝试运行以下代码时:
function chunkArrayInGroups(arr, size) {
// Break it up.
var arr_final=[];
for(var i=0,j=0;i<arr.length;i++)
{
arr_final[j].push(arr[i]);
if(i===size)
{
j++;
}
}
return arr_final;
}
console.log(chunkArrayInGroups(["a", "b", "c", "d"], 2));
有人可以帮忙吗?
答案 0 :(得分:0)
而不是
arr_final[j].push(arr[i]);
做类似
的事情arr_final.push(arr[i]);
答案 1 :(得分:0)
您忘记使用空数组初始化每个块。更正了以下代码:
function chunkArrayInGroups(arr, size) {
// Break it up.
var arr_final=[[]]; // <-- initialize chunk
for(var i=0,j=0;i<arr.length;i++)
{
arr_final[j].push(arr[i]);
if(i===size)
{
arr_final.push([]); // <-- initialize chunk
j++;
}
}
return arr_final;
}
console.log(chunkArrayInGroups(["a", "b", "c", "d"], 2));
我猜你的分块逻辑也有错误,所以你真正想要的是:
function chunkArrayInGroups(arr, size) {
// Break it up.
var arr_final=[];
for(var i=0,j=-1;i<arr.length;i++)
{
if (i % size === 0) {
arr_final.push([]);
j++;
}
arr_final[j].push(arr[i]);
}
return arr_final;
}
console.log(chunkArrayInGroups(["a", "b", "c", "d"], 2));
答案 2 :(得分:0)
为了将输入数组拆分为多个长度≤大小的块,每次迭代器变量arr_final.push([])
达到i
的倍数时,需要初始化一个新的空块size
- - 您可以通过模运算符检查:
function chunkArrayInGroups(arr, size) {
// Break it up.
var arr_final = [];
for (var i = 0, j = -1; i < arr.length; ++i) {
if (i % size == 0) {
arr_final.push([]);
j++;
}
arr_final[j].push(arr[i]);
}
return arr_final;
}
console.log(chunkArrayInGroups(["a", "b", "c", "d", "e"], 3));