【问题标题】:Javascript turn property of objects in array into a string [duplicate]Javascript将数组中对象的属性转换为字符串[重复]
【发布时间】:2016-08-30 11:39:43
【问题描述】:

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

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

或者还有其他方法吗?

【问题讨论】:

    标签: javascript arrays object


    【解决方案1】:

    你可以使用Array.prototype.map:

    var result = myArr.map(function(x) { return x.bar; }).join(',');
    

    【讨论】:

      【解决方案2】:

      你可以使用Array.prototype.reduce:

      var result = myArr.reduce(function(acc, el) {
       if(!acc) return el.bar;
       return acc + ', ' + el.bar;
      }, '');
      

      【讨论】:

      • 我认为这是“正确”的方法。严格来说,将集合映射到单个值是一种缩减。它还将保存映射 + 连接的循环。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-15
        • 1970-01-01
        • 2011-12-06
        • 2019-03-04
        • 1970-01-01
        相关资源
        最近更新 更多