Javascript 带对象变换的数组
我有一个数组,其中包含以下对象:Javascript 带对象变换的数组,javascript,arrays,Javascript,Arrays,我有一个数组,其中包含以下对象: arr = [ {name: 'Igor', id: 1,....}, {name: 'Anton', id: 1,.... }, {name: 'Igor', id: 2,.... }, {name: 'Peter', id: 2,.... }, {name: 'Igor', id: 2,.... } ] 我需要获得新阵列,如: arrId = [ { id: 1, names: 'Igor, Anton' }, { id: 2,
arr = [
{name: 'Igor', id: 1,....},
{name: 'Anton', id: 1,.... },
{name: 'Igor', id: 2,.... },
{name: 'Peter', id: 2,.... },
{name: 'Igor', id: 2,.... }
]
我需要获得新阵列,如:
arrId = [
{ id: 1, names: 'Igor, Anton' },
{ id: 2, names: 'Igor, Peter' }
]
无法想出好的解决方案var arrId=[];
var arrId = [];
var arrKey = {};
for( var counter = 0; counter < arr.length; counter++)
{
var arrObj = arr[ counter ];
if ( !arrKey[ arrObj[ "id" ] ] )
{
arrKey[ arrObj[ "id" ] ] = [];
}
arrKey[ arrObj[ "id" ] ].push( arrObj[ "name" ] );
}
for ( var id in arrKey )
{
arrId.push( [ "id": id, names : arrKey[ id ].join( "," ) ] );
}
console.log(arrId );
var arrKey={};
用于(变量计数器=0;计数器
var arrId=[];
var arrKey={};
用于(变量计数器=0;计数器
在本例中,我使用和
输出
[
{
"id": 1,
"names": "Igor, Anton"
},
{
"id": 2,
"names": "Igor, Peter"
}
]
在本例中,我使用和
输出
[
{
"id": 1,
"names": "Igor, Anton"
},
{
"id": 2,
"names": "Igor, Peter"
}
]
您可以使用reduce函数
arr=[
{name:'Igor',id:1},
{name:'Anton',id:1},
{name:'Igor',id:2},
{姓名:'Peter',id:2},
{name:'Igor',id:2}
]
//第一组需要id项中的字段
var结果=arr.REDUCT(功能(acc、cur){
如果(!acc.map[cur.id]){
acc.map[cur.id]={id:cur.id,名称:{};
acc.result.push(acc.map[cur.id]);
}
acc.map[cur.id].names[cur.name]=true;
返回acc;
},{map:{},结果:[]})
//从具有名称的映射对象到以逗号分隔的字符串进行附加转换
.result.map(函数(el){
返回{id:el.id,name:Object.keys(el.names).join(',')};
});
控制台日志(结果);
document.body.innerHTML=JSON.stringify(结果,null,2)代码>您可以使用reduce函数
arr=[
{name:'Igor',id:1},
{name:'Anton',id:1},
{name:'Igor',id:2},
{姓名:'Peter',id:2},
{name:'Igor',id:2}
]
//第一组需要id项中的字段
var结果=arr.REDUCT(功能(acc、cur){
如果(!acc.map[cur.id]){
acc.map[cur.id]={id:cur.id,名称:{};
acc.result.push(acc.map[cur.id]);
}
acc.map[cur.id].names[cur.name]=true;
返回acc;
},{map:{},结果:[]})
//从具有名称的映射对象到以逗号分隔的字符串进行附加转换
.result.map(函数(el){
返回{id:el.id,name:Object.keys(el.names).join(',')};
});
控制台日志(结果);
document.body.innerHTML=JSON.stringify(结果,null,2)
你可以使用reduce你能说出这两个数组的确切区别吗?@void,按id分组的名称你能解释一下你用来生成新数组的规则吗?我假设{id:1,名称:'Igor,Peter'}
应该是{id:2,名称:'Igor,Peter'}
,,否则就没有意义了。你可以使用reduce你能说出这两个数组的确切区别吗?@void,按id分组的名称你能解释一下生成新数组的规则吗?我假设{id:1,名称:'Igor,Peter'}
应该是{id:2,名称:'Igor,Peter'
,,否则就没有意义了,尤其是我的English@IgorKim,你的英语很好。别担心:)特别是*为我的错误感到抱歉English@IgorKim,你的英语很好。别担心:)