开发者社区> 问答> 正文

对对象数组中的值执行.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 465 0
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
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载