开发者社区 问答 正文

对对象数组中的值执行.join

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

["Joe", "Kevin", "Peter"].join(", ") // => "Joe, Kevin, Peter" 我有一个对象数组,我想对其中的值执行类似的操作;所以从

[ {name: "Joe", age: 22}, {name: "Kevin", age: 24}, {name: "Peter", age: 21} ] join仅对name属性执行该方法,以实现与以前相同的输出。

目前,我具有以下功能:

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

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

return out.join(", "); } 该代码没有任何问题,它可以工作,但是突然之间,我已经从简单,简洁的代码行变成了非常必要的功能。有没有更简洁,更理想的功能编写方式?

展开
收起
保持可爱mmm 2020-01-16 15:31:54 474 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 如果要将对象映射到某物(在这种情况下为属性)。Array.prototype.map如果您想进行功能编码,我认为您正在寻找的是。

    [ {name: "Joe", age: 22}, {name: "Kevin", age: 24}, {name: "Peter", age: 21} ].map(function(elem){ return elem.name; }).join(","); 在现代JavaScript中:

    [ {name: "Joe", age: 22}, {name: "Kevin", age: 24}, {name: "Peter", age: 21} ].map(e => e.name).join(","); (小提琴)

    如果要支持不兼容ES5的旧版浏览器,则可以对其进行填充(上面的MDN页上有一个polyfill)。另一种选择是使用underscorejs的pluck方法:

    var users = [ {name: "Joe", age: 22}, {name: "Kevin", age: 24}, {name: "Peter", age: 21} ]; var result = _.pluck(users,'name').join(",") 问题来源于stack overflow

    2020-01-16 15:32:08 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等