如果我有一个字符串数组,我可以使用 .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(", ");
}
这段代码没有任何问题,它可以工作,但突然之间,我已经从一个简单、简洁的代码行变成了一个非常命令式的函数。有没有更简洁、更实用的写法?
原文由 jackweirdy 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想将对象映射到某物(在本例中为属性)。我认为
Array.prototype.map
是您正在寻找的功能,如果您想进行功能性编码。(小提琴)
如果您想支持不 符合 ES5 的旧浏览器,您可以对其进行填充(上面的 MDN 页面上有一个 polyfill)。另一种选择是使用 underscorejs 的
pluck
方法: