从对象数组的属性创建数组的功能方法?

时间:2016-10-05 15:36:40

标签: javascript typescript functional-programming

所以基本上就是我拥有的,按预期工作 -

        let newList: any[] = [];

        for (let stuff of this.Stuff) {
            newList = newList.concat(stuff.food);
        }

所以基本上Stuff是一个对象数组,其中每个对象都有一个属性,它是另一个叫做food的对象。我想通过这个Stuff数组并创建一个包含每个食物实例的新数组。

我不认为我这样做的方式很糟糕,我只是想知道如果没有for循环,有人会如何做到这一点。

干杯。

3 个答案:

答案 0 :(得分:2)

您正在寻找map method

const newList = this.Stuff.map(stuff => stuff.food);

您不应该对变量使用连续重新分配,并且它肯定不起作用:-)而且,反复使用concat非常低效,您最好拥有在push循环中使用了for…of。但是map仍然更简单,更好。

答案 1 :(得分:0)

使用reduce方法

尝试此方法



var arr = [[1,2,3],[4,5,6],[7,8,9]];
var output = arr.reduce( function ( prev, curr ){ return prev.concat( curr ) } );
console.log(output);




答案 2 :(得分:0)

您可以使用添加的功能原语

来表达这一点
const prop = x => y => y[x];

const newList = this.Stuff.map(prop('food'));