gpt4 book ai didi

javascript - 在 JavaScript 中将值插入数组数组

转载 作者:行者123 更新时间:2023-11-28 12:24:42 26 4
gpt4 key购买 nike

我有一个数组,如下所示:

var arr = [[1,2,3],[4,5,6],[7,8,9]];

之后我有一个数字列表和一个循环

var list = [15,10,11,14,13,12]

for (i=0; i<list.length; i++) {

var val = list[i];

if (val >= 10 && val < 13) {
arr[arr.length].push(val);
}
else if (val >= 13 && val < 16) {
arr[arr.length+1].push(val);
}
}

所以基本上我喜欢这样的输出:

arr = [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]];

使用此代码,我收到错误“无法读取未定义的属性‘push’”

同样重要的是,我不能使用 arr[3].push 或 arr[4].push,因为我的情况更复杂,而且我总是需要将值推送到新数组,该数组将出现在数组的上方。无论我里面有多少物体。

最佳答案

发生这种情况是因为arr[arr.length]将始终是未定义

所以你基本上在做

undefined.push(x);
// Cannot read property 'push' of undefined

“同样重要的是我不能使用 arr[3].push 或 arr[4].push,因为我的情况更复杂,而且我总是需要将值推送到将出现的新数组在我的数组的上方。无论里面有多少对象。”

该算法是 code smell不过,如果您发布实际代码,我们可能可以更好地帮助您。

要了解我在说什么,请考虑以下代码

// your numbers in a random order
var xs = [7,10,2,15,4,9,14,1,8,12,5,11,3,6,13];

// sort them
xs.sort(function(a, b) { return a-b; });

// define a function that "chunks" a list into smaller parts
function chunk(xs, n) {
function iter(ys, y, xs) {
if (y.length === 0) return ys;
return next(ys.concat([y]), xs);
}
function next(ys, xs) {
return iter(ys, xs.slice(0,n), xs.slice(n));
}
return next([], xs);
}

// call our function on your sorted list
var ys = chunk(xs, 3);

console.log(JSON.stringify(ys));
//=> [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]]

关于javascript - 在 JavaScript 中将值插入数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30821388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com