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

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

[“乔”、“凯文”、“彼得”]。加入(“,”/=>“乔,凯文,彼得”

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

[
{姓名:“乔”,年龄:22},
{姓名:“凯文”,年龄:24},
{姓名:“彼得”,年龄:21}
]

仅对name属性执行join方法,以获得与以前相同的输出

目前我有以下功能:

函数joinObj(a,attr){
var out=[];
对于(变量i=0;i<a.length;i++){
向外推(a[i][attr]);
}
返回。加入(“,”);
}

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

如果要将对象映射到某个对象(在本例中为属性)。我认为如果您想从功能上进行编码,您需要的是Array.prototype.map

console.log([
{姓名:“乔”,年龄:22},
{姓名:“凯文”,年龄:24},
{姓名:“彼得”,年龄:21}
].map(功能(elem){
返回元素名;
}).加入(“,”)

在现代JavaScript中:

console.log([
{姓名:“乔”,年龄:22},
{姓名:“凯文”,年龄:24},
{姓名:“彼得”,年龄:21}
].map(e=>e.name).join(“,”)

(小提琴)

如果您想支持不符合ES5的旧浏览器,可以对其进行填充(上面的MDN页面上有一个polyfill)。另一种选择是使用下划线JS的pull方法:

var用户=[
{姓名:“乔”,年龄:22},
{姓名:“凯文”,年龄:24},
{姓名:“彼得”,年龄:21}
];
var result=.pull(用户,'name').join('quot;,'quot;)

发表评论