【发布时间】:2021-10-23 12:15:51
【问题描述】:
在运行Object.entries(); 之后遍历对象非常好,除非不是这样。
案例和要点:
[
[
'0',
{
A: 'a',
B: 'b',
C: 'c'
}
],
[
'1',
{
A: 'z',
B: 'x',
C: 'y'
}
]
]
这是数组 'me_data' 中数据结构的精确代理,在通过 node . 节点中的 Object.entries 运行获取的数据后恰好记录到控制台
重点不是Object.entries,而是后面的双重迭代,这里:
me_data.forEach(function(row){
row.forEach(function(col){
console.log(col);
});//end col
});//end row
console.log(col) 的结果:
0
{
A: 'a',
B: 'b',
C: 'c'
}
1
{
A: 'z',
B: 'x',
C: 'y'
}
控制台只打印每个嵌套数组的迭代并对其编号。当您通过两个迭代周期(或非代理数据的 400 个周期)访问每个数组中的一个元素时,就会出现问题。
me_data.forEach(function(row){
row.forEach(function(col){
console.log(col['A']);
});//end col
});//end row
每个循环的结果在下一行传递值,然后是 undefined,依此类推:
a
undefined
z
undefined
尝试过滤掉未定义的结果失败并出现错误
Error parsing JSON: TypeError: Cannot read property 'filter' of undefined
me_data.forEach(function(row){
row.forEach(function(col){
let filtered = col['A'].filter(function(x) {
return x !== undefined;
});
console.log(filtered);
});//end col
});//end row
这里有什么遗漏吗?为什么每次迭代后控制台都会打印“未定义”?在每次多维迭代过程中,如何从每个嵌套的键值对数组中访问和使用属于同一个命名键的值?
【问题讨论】:
-
为什么是
row.forEach而不仅仅是row[1]?为什么Object.entries而不仅仅是Object.values? -
row.forEach因为它是一个大的嵌套数组,所以我们需要每个子数组的数据。 Objec.values 上的对象条目没有特殊原因,只是将解析后返回的整个 json 对象转换为数组,以防以后出现其他问题。 -
我以为你只需要对象的
A属性。您需要索引中的哪些数据? -
数据丢失的情况下会从apis带进来;但是,Object.values 在这里也可能就足够了。
标签: javascript node.js arrays multidimensional-array console