如何正确遍历嵌套数组,输出每个对象的Number属性值?
解决数组遍历输出Number值的问题
我来帮你梳理下问题所在,然后给出可行的解决方案:
你的代码存在两个关键问题:
- 外层循环范围不足:你写的
i < 3只会遍历前3个子数组,而你的Sonuc数组一共有5个子元素,这样会漏掉后面的两个数组内容。 - 内层遍历方式错误:
for...in是用来遍历对象的键名的,当你用它遍历数组时,拿到的是数组的索引(比如"0"、"1"这类字符串),而不是数组里的对象,所以obj.Number自然无法获取到正确的属性值。
几种正确的实现方式:
方式1:嵌套for循环(兼容性最好)
var Sonuc = [[{"ID":8,"Number":"1","Name":"Ahmet"}], [{"ID":7,"Number":"2","Name":"Semih"}], [{"ID":6,"Number":"3","Name":"Derviş"}], [{"ID":8,"Number":"4","Name":"Derviş"},{"ID":9,"Number":"4","Name":"Veli"}], [{"ID":11,"Number":"44","Name":"Zeki"},{"ID":45,"Number":"44","Name":"Veli"}]]; // 外层遍历Sonuc的所有子数组 for (var i = 0; i < Sonuc.length; i++) { var subArray = Sonuc[i]; // 内层遍历子数组里的每个对象 for (var j = 0; j < subArray.length; j++) { console.log(subArray[j].Number); } }
方式2:forEach方法(代码更简洁)
Sonuc.forEach(subArray => { subArray.forEach(obj => { console.log(obj.Number); }); });
方式3:ES6 for...of循环(语法更直观)
for (const subArray of Sonuc) { for (const obj of subArray) { console.log(obj.Number); } }
以上三种方式都能正确输出每个对象的Number值到控制台,你可以根据自己的代码环境选择合适的写法~
内容的提问来源于stack exchange,提问作者tgrl-66
相关产品推荐
相关产品推荐

