只需要了解在ES5 / ES6中更好地使用新的for循环。 我已经阅读了上面的代码来修改对象的items数组。
var selected = [1, 2, 4, 6],
items = [
{ id: 1, selected: false },
{ id: 2, selected: false },
{ id: 3, selected: false },
{ id: 4, selected: false },
{ id: 5, selected: true },
{ id: 6, selected: false }
]
set = new Set(selected)
items.forEach(a => a.selected = set.has(a.id))
我的问题是,上面的forEach语句的循环等价是什么?
for(let [index, value] of items.entries()) {
return value.selected = set.has(value.id)
}
答案 0 :(得分:0)
你发布的内容非常接近 - 我看到的唯一问题是你试图return
,它将提前退出整个函数(并因此循环)。这是因为循环在每次迭代时都没有调用任何新函数,因此return
会离开for
开始迭代的函数。如果从初始尝试中删除return
,它将正常运行并按预期运行。
var selected = [1, 2, 4, 6],
items = [
{ id: 1, selected: false },
{ id: 2, selected: false },
{ id: 3, selected: false },
{ id: 4, selected: false },
{ id: 5, selected: true },
{ id: 6, selected: false }
]
set = new Set(selected)
// items.forEach(a => a.selected = set.has(a.id))
for(let [index, value] of items.entries()) {
value.selected = set.has(value.id)
}
console.log(items);