Javascript将数组中对象的属性转换为字符串

Javascript turn property of objects in array into a string

本文关键字:属性 转换 字符串 对象 数组 Javascript      更新时间:2023-09-26

我有一个对象数组,它们都是同一类的实例,如下所示:

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+","
 }

或者还有别的办法吗?

您可以使用Array.prototype.map:

var myArr = [
  {bar: "Joe", age: 22},
  {bar: "Kevin", age: 24},
  {bar: "Peter", age: 21}
];
console.log(myArr.map(function(x) { return x.bar; }).join(','));

您可以使用Array.prototype.reduce:

var myArr = [
  {bar: "Joe", age: 22},
  {bar: "Kevin", age: 24},
  {bar: "Peter", age: 21}
];
console.log(myArr.reduce(function(acc, el) {
     if(!acc) return el.bar;
     return acc + ', ' + el.bar;
}, ''));

使用Array.reduce函数的替代解决方案:

var barValues = myArr.reduce((a,b) => (a['bar'] || a) + "," + b['bar']);
console.log(barValues);  // "1,2,3,4"