如果我有一个字符串数组,则可以使用该.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(", "); } 该代码没有任何问题,它可以工作,但是突然之间,我已经从简单,简洁的代码行变成了非常必要的功能。有没有更简洁,更理想的功能编写方式?
如果要将对象映射到某物(在这种情况下为属性)。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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。