【发布时间】:2023-03-23 12:36:01
【问题描述】:
这里到底哪里错了?我收到“无法读取未定义的属性 'push'”错误,我认为这是因为无法通过简单地在循环中声明数组来将其设置为多维。
var single = [];
for (var i = 0; i < all.length; i++) {
name = all[i].name;
single[name].push(all[i]);
}
我想要实现的是这个结构:
Array (
([name1] => [node1],[node2],[node3]),
([name2] => [node1],[node2],[node3],[node4],[node5],[node6]),
([name2] => [node1],[node2])
etc...
)
我试过在这里搜索 SO,但到目前为止只有两个选项:
选项 1:声明变量的简写,也就是 [[]],它不起作用。
var single = [[]];
选项 2:link 在填充之前添加另一个循环来计算数组。
var matrix = []
cols = 3;
//init the grid matrix
for ( var i = 0; i < cols; i++ ) {
matrix[i] = [];
}
我宁愿找到一个更短的解决方案,也是因为我的数组元素必须有键,而在上面的解决方案中它们是编号的。
编辑:既然 JS 数组中的键不是一个选项,那么在这种情况下对象可以解决问题吗?类似:
var obj = {
key1: value1,
key2: value2
};
obj.key3 = "value3";
【问题讨论】:
-
你想要的结构无效,数组中不能有命名键
-
在JS中绝对没有办法做到这一点?
-
数组中的所有键都是/必须是javascript中的整数
标签: javascript arrays for-loop multidimensional-array push