如果我有一个字符串数组,我可以使用.join()方法获得一个字符串,每个元素用逗号分隔,如下所示:

["Joe", "Kevin", "Peter"].join(", ") // => "Joe, Kevin, Peter"

我有一个对象数组,我想对其中的值执行类似的操作;所以从

[
  {name: "Joe", age: 22},
  {name: "Kevin", age: 24},
  {name: "Peter", age: 21}
]

只对name属性执行join方法,以实现与前面相同的输出。

目前我有以下功能:

function joinObj(a, attr){
  var out = [];

  for (var i = 0; i < a.length; i++){
    out.push(a[i][attr]);
  }

  return out.join(", ");
}

这段代码没有什么问题,它可以工作,但突然之间,我从简单、简洁的代码行变成了一个非常命令式的函数。有没有更简洁,更实用的写法呢?


当前回答

如果对象和动态键:“应用程序\”:{\“1 \”,\“Element1 \”,\“2 \”,\“Element2 \”}

Object.keys(myObject).map(function (key, index) {
    return myObject[key]
}).join(', ')

其他回答

如果对象和动态键:“应用程序\”:{\“1 \”,\“Element1 \”,\“2 \”,\“Element2 \”}

Object.keys(myObject).map(function (key, index) {
    return myObject[key]
}).join(', ')

简单的方法:

const oldArrayOfObjects = [ {姓名:“鲍勃”,年龄:40}, {姓名:“安德鲁”,年龄:25}, {姓名:“Peter”,年龄:30}]; const newArrayOfStringNames = oldArrayOfObjects.map((OA) => OA.name); const newArrayOfAges = oldArrayOfObjects.map((OA) => OA.age); console.log ({newArrayOfStringNames, newArrayOfAges})

如果您想将对象映射到某些东西(在本例中是属性)。我认为数组。prototype。map是你要寻找的如果你想要功能性编码的话。

(小提琴)

如果你想支持不兼容ES5的旧浏览器,你可以shim它(上面的MDN页面上有一个填充)。另一种选择是使用下划线的pluck方法:

var users = [
      {name: "Joe", age: 22},
      {name: "Kevin", age: 24},
      {name: "Peter", age: 21}
    ];
var result = _.pluck(users,'name').join(",")

Const lists = [ {名字:“乔”,年龄:22岁}, {姓名:“凯文”,年龄:24}, {姓名:“彼得”,年龄:21岁} ] const joinedStr = lists.map((list) => list.name).join(" ") console.log(“加入”,joinedStr)

这应该可以做到,因为map将返回一个字符串数组,然后您可以加入它

我不知道是否有不使用外部库的更简单的方法,但我个人喜欢underscore.js,它有大量用于处理数组、集合等的实用程序。

使用下划线,你可以用一行代码轻松做到这一点:

_。拔(arr的名字”)。加入(" ")