Javascript 如果数组对象中的值相同,则使用逗号分隔的值进行concat
我有一个目标。如果路径相等,我想将名称合并到一个对象中 例如:Javascript 如果数组对象中的值相同,则使用逗号分隔的值进行concat,javascript,Javascript,我有一个目标。如果路径相等,我想将名称合并到一个对象中 例如: [ { 姓名:'Gaurav', 路径:'./公共/用户' }, { 姓名:'Saurav', 路径:'./公共/用户' }, { 姓名:'Mohit', 路径:'./公共/测试' } ]您可以使用reduce根据路径对数据进行分组,然后获取对象的值,这将是您的预期输出 const arr=[{name:'Gaurav',path:'./public/user'},{name:'Saurav',path:'./public/us
[
{
姓名:'Gaurav',
路径:'./公共/用户'
},
{
姓名:'Saurav',
路径:'./公共/用户'
},
{
姓名:'Mohit',
路径:'./公共/测试'
}
]
您可以使用reduce
根据路径对数据进行分组,然后获取对象的值,这将是您的预期输出
const
arr=[{name:'Gaurav',path:'./public/user'},{name:'Saurav',path:'./public/user'},{name:'Mohit',path:'./public/test'}];
结果=Object.values(arr.reduce((a,{name,path})=>{
a[path]?={path};
a[path].name=(a[path].name | |“”).split(“,”).filter(布尔值).concat(名称).join(“,”)
返回a;
},{}));
控制台日志(结果)好的,你试过什么?我是说。。。它是有效的。。。但是,天哪,我们希望您永远不必在更大的数据集上运行它。。。
var a=[
{
name:'Gaurav',
path:'./public/user'
},
{
name:'Saurav',
path:'./public/user'
},
{
name:'Mohit',
path:'./public/test'
}
]
var output = [];
a.forEach(function(item) {
var temp= output.filter(function(v, i) {
return v.path == item.path;
});
if (temp.length) {
var tempIndx= output.indexOf(temp[0]);
output[tempIndx].name = output[tempIndx].name+","+item.name;
} else {
if (typeof item.name == 'string')
output.push(item);
}
});
console.log(output);