我有一个对象数组,它们都是同一个类的所有实例,如下所示:
class Foo {
constructor(bar){
this.bar = bar;
}
}
var myArr = [new Foo("1"), new Foo("2"), new Foo("3"), new Foo("4")];
我希望能够将数组中每个对象的bar属性加入逗号分隔的字符串中。
是否可以在对象的属性上调用.join方法?如果没有低于最有效的方法吗?
var result = "";
for (var i = 0; i < myArr.length; i++){
result += myArr[i].bar+","
}
还是有另一种方式吗?
答案 0 :(得分:2)
您可以使用Array.prototype.map
:
var result = myArr.map(function(x) { return x.bar; }).join(',');
答案 1 :(得分:1)
您可以使用Array.prototype.reduce
:
var result = myArr.reduce(function(acc, el) {
if(!acc) return el.bar;
return acc + ', ' + el.bar;
}, '');
答案 2 :(得分:0)
使用Array.reduce
函数的替代解决方案:
var barValues = myArr.reduce((a,b) => (a['bar'] || a) + "," + b['bar']);
console.log(barValues); // "1,2,3,4"