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