forEach返回循环等效

时间:2018-03-27 03:27:26

标签: ecmascript-6

只需要了解在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)
}

1 个答案:

答案 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);