gpt4 book ai didi

javascript - 在 Javascript 循环中创建嵌套数组

转载 作者:行者123 更新时间:2023-11-28 20:40:45 25 4
gpt4 key购买 nike

当我处理数据时,我通常需要在循环中创建数组对象,比方说“即时”。

举例来说,我想重新排列一个数组,通过数组键之一对元素进行分组:我使用的方法之一是通过 for in 进行循环。但问题是当我动态定义多个索引时。

for(key in array){
newArray[array[key]['gouping_key']] = array[key];
}

这个例子运行良好。但是,如果您有多个具有相同 grouping_key 的元素,则此代码将覆盖您的前一个元素。

所以,我尝试这个:

var i = 0;
for(key in array){
newArray[array[key]['gouping_key']][i] = array[key];
i++
}

但是当我添加第二个索引时,解释器提示说 newArray[array[key]['gouping_key']]未定义。上一个示例似乎没有出现问题。

这是为什么呢?

我做了this fiddle举个例子,以防前面的片段解释不充分且不清楚。在 fiddle 中,您有三个片段(两个被注释掉)。

第一个是我在尝试类似我之前提到的内容时遇到的错误。第二个是我使用的解决方案。第三个是仅使用一个索引动态创建数组的示例。

总结一下,我想知道为什么当您添加第二个索引时,会出现该错误。

谢谢!

最佳答案

var i = 0;
for(key in array){

// If nested object doesn't exist, make an empty one.
newArray[array[key]['gouping_key']][i] =
newArray[array[key]['gouping_key']][i] || [];

newArray[array[key]['gouping_key']][i] = array[key];
i++
}

您需要创建一个要推送到的数组,它不是为您创建的。您可以使用 || 运算符仅在 未定义 的情况下创建空数组。

此外,还有很多嵌套需要遵循...如果可以的话...

var x, y;
y = 0;
for(key in array){
x = array[key].gouping_key;
newArray[x][y] = newArray[x][y] || []
newArray[x][y] = array[key];
y++
}

看看它的可读性如何?它还更快!您不必一遍又一遍地深入遍历复杂的对象。

关于javascript - 在 Javascript 循环中创建嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14445898/

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