ECMA6在中间传播功能vs forEach?

时间:2016-12-01 02:09:01

标签: javascript ecmascript-6

我有以下代码块工作正常,但我觉得有一个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));
});

...当然不起作用,因为它只推送第一个数组元素。有更清洁的方式吗?

2 个答案:

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