Javascript PolymerJS:如何正确地使用set()和forEach循环更新数组中的所有项

Javascript PolymerJS:如何正确地使用set()和forEach循环更新数组中的所有项,javascript,foreach,polymer,Javascript,Foreach,Polymer,我有一个如下所示的数组: items: [ {title: 'First Title', completed: false}, {title: 'Second Title', completed: false}, {title: 'Third Title', completed: false} ]; 我想将每个项设置为真。为此,我有一个按钮,在点击时触发一个事件,执行以下代码段 Polymer团队使用为循环设置布尔值: for (var i = 0; i <

我有一个如下所示的数组:

items: [
    {title: 'First Title', completed: false}, 
    {title: 'Second Title', completed: false}, 
    {title: 'Third Title', completed: false}
];
我想将每个
设置为
。为此,我有一个按钮,在点击时触发一个事件,执行以下代码段

Polymer团队使用
循环设置布尔值:

for (var i = 0; i < this.items.length; ++i) {
    this.set(['items', i, 'completed'], true);
}
具体地说,我使用
I
连接的部分对我来说似乎很粗糙


与Vue相同的代码

this.items.forEach(function(item) {
    return item.completed = true;                   
});

聚合物API声明:

设置(路径、值、根)路径(字符串数组) 要读取的值的路径。路径可以指定为字符串(例如foo.bar.baz)或路径部分的数组(例如。['foo.bar','baz'])。请注意,括号内的表达式不受支持;基于字符串的路径部分必须用点分隔。请注意,当取消引用数组标记时,索引可以直接用作虚线部分(例如users.12.name或['users',12'name'])。 价值* 要在指定路径上设置的值。 根对象= 从中计算路径的根对象


问题:

var that = this;
this.items.forEach(function(item) {
    var i = that.items.indexOf(item);

    that.set('items.' + i + '.completed', true);
    // or
    // that.set(['items', i, 'completed'], true);
});
因为我使用索引的部分似乎有点粗糙,缺少更好的术语,我想知道,是否有更方便的方法使用Polymer中的forEach循环来更新数组中的所有项


谢谢。

forEach的回调函数可以有第二个参数,该参数引用当前索引。这也适用于数组的
映射
每个
一些
过滤
方法

ES5版本 ES6版本
来源:

我认为这实际上是一个稍微令人困惑的片段。我想你的回答暗示了,没有比
更方便的方法将Polymer中数组的所有项设置为
true
this.items.forEach(function(item, index) {
  this.set('items.'+index+'.completed', true);
}.bind(this));
this.items.forEach((item, index) => this.set(`items.${index}.completed`, true));