如何使用.forEach方法正确访问数组中的对象?
正确使用Array.forEach访问数组对象的方法
嘿,我懂你为啥一开始会想着自己维护索引变量i来取数组里的对象——毕竟刚接触的时候可能会惯性沿用普通循环里的索引思路,但其实forEach方法的设计就是帮你省去手动管理索引的麻烦!
你原来的写法不仅绕了远路,还可能因为数组中途被修改(比如删除元素)导致索引和实际元素不匹配的问题。正确的用法是直接利用forEach回调函数的第一个参数,它会自动把当前遍历到的数组元素传递给你。
举个针对你甜甜圈数组的具体例子:
var donuts = [ { type: "Jelly", cost: 1.22 }, { type: "Chocolate", cost: 2.45 }, { type: "Cider", cost: 1.59 }, { type: "Boston Cream", cost: 5.99 } ]; // 正确的forEach用法 donuts.forEach(function(donut) { // 直接通过donut访问当前对象的属性 var donutType = donut.type; var donutCost = donut.cost; console.log(`${donutType} 甜甜圈价格:$${donutCost}`); });
这里的donut参数就是数组里每一个遍历到的对象,你可以直接用它访问type和cost属性,完全不需要自己定义i变量去通过索引取值。
另外,如果你确实需要知道当前元素在数组里的索引(比如要给甜甜圈加序号),forEach的回调还支持第二个参数(当前索引)和第三个参数(原数组),比如:
donuts.forEach(function(donut, index) { console.log(`第${index + 1}个甜甜圈:${donut.type},价格$${donut.cost}`); });
这样是不是简洁多了?而且还避免了手动维护索引可能带来的错误~
内容的提问来源于stack exchange,提问作者ak39464
相关产品推荐
相关产品推荐

