我有以下代码块工作正常,但我觉得有一个ECMA6简化,我缺少。
概念代码:
//set.data is an array of objects
service.find().then(set => {
set.data.forEach(function(part, index) {
set.data[index] = itemModificationFunction(set.data[index]);
});
this.items.push(...set.data);
});
var itemModificationFunction = function (data) {
data.addFoo = 'additionalFoo';
return data;
};
... VS。像这样......
service.find().then(set => {
this.items.push(itemModificationFunction(...set.data));
});
...当然不起作用,因为它只推送第一个数组元素。有更清洁的方式吗?
答案 0 :(得分:1)
使用map
代替forEach
:
service.find().then(set => this.items.push(...set.data.map(modifyItem)));
答案 1 :(得分:0)
感到惊讶我没有看到这个,但传播或forEach都没有必要。这是最直接的代码,对于大型数组来说要快得多。
service.find().then(set => {
this.items = this.items.concat(set.data.map(itemModificationFunction))
});