Javascript 解决问题我有一项任务,就是用这个小例子进行排序,但我得不到任何帮助?

Javascript 解决问题我有一项任务,就是用这个小例子进行排序,但我得不到任何帮助?,javascript,node.js,reactjs,angular,react-native,Javascript,Node.js,Reactjs,Angular,React Native,我有一个来自后端的数组,按以下格式排序,如以下示例所示: const Data = [ {id: 1, name: "jack"}, {id: 1, name: "george"}, {id: 1, name: "morries"}, {id: 2, name: "abdo"}, {id: 2, name: "ezz"}, {id: 3, name:

我有一个来自后端的数组,按以下格式排序,如以下示例所示:

const Data = [
    {id: 1, name: "jack"},
    {id: 1, name: "george"},
    {id: 1, name: "morries"},
    {id: 2, name: "abdo"},
    {id: 2, name: "ezz"},
    {id: 3, name: "mostafa"},
    {id: 4, name: "hamo"},
];
我想要一个具有所有关联名称的唯一ID的新数组,如下所示:

const newData = [
    {id:1, names:["jack","george","morries"]},
    {id:2, names:["abdo","ezz"]},
    {id:3, names:["mostafa"]},
    {id:4, names:["hamo"]}
]
以下是我的想法:

for (var i = 0; i <= Data.length; i++) {
if (newData.length > 0) {
    for (var j = 0; j <= newData.length; j++) {
        if (newData[j].id === Data[i].id) {
            null
        }
        else newData.push(Data[i])
    }
}
else newData.push(Data[i])
for(变量i=0;i 0){
对于(var j=0;j您可以参考

let map = new Map<number,string[]>();
this.Data.forEach(item => {
  if(map.has(item.id)){
    map.get(item.id).push(item.name);
  }else{
    map.set(item.id, [item.name]);
  }
});
let map=new map();
this.Data.forEach(项=>{
如果(地图有(项目id)){
map.get(item.id).push(item.name);
}否则{
map.set(item.id、[item.name]);
}
});
您可以参考

let map = new Map<number,string[]>();
this.Data.forEach(item => {
  if(map.has(item.id)){
    map.get(item.id).push(item.name);
  }else{
    map.set(item.id, [item.name]);
  }
});
let map=new map();
this.Data.forEach(项=>{
如果(地图有(项目id)){
map.get(item.id).push(item.name);
}否则{
map.set(item.id、[item.name]);
}
});

const数据=[
{id:1,名字:“jack”},
{id:1,名字:“乔治”},
{id:1,名字:“莫里斯”},
{id:2,姓名:“abdo”},
{id:2,名称:“ezz”},
{id:3,姓名:“mostafa”},
{id:4,名字:“hamo”},
];
var new_数组=[];
对于(变量i=0;ix.id==id\u值);
控制台日志(索引);
//如果找不到
如果(索引==-1){
//将ID添加到新数组
data_array.push({id:id_值,名称:[]});
index=data\u array.findIndex(x=>x.id==id\u值);
} 
//返回id
收益指数;
}

const数据=[
{id:1,名字:“jack”},
{id:1,名字:“乔治”},
{id:1,名字:“莫里斯”},
{id:2,姓名:“abdo”},
{id:2,名称:“ezz”},
{id:3,姓名:“mostafa”},
{id:4,名字:“hamo”},
];
var new_数组=[];
对于(变量i=0;ix.id==id\u值);
控制台日志(索引);
//如果找不到
如果(索引==-1){
//将ID添加到新数组
data_array.push({id:id_值,名称:[]});
index=data\u array.findIndex(x=>x.id==id\u值);
} 
//返回id
收益指数;
}

您可以通过查找索引来减少数组

const Data=[{id:1,name:“jack”},{id:1,name:“george”},{id:1,name:“morries”},{id:2,name:“abdo”},{id:2,name:“ezz”},{id:3,name:“mostafa”},{id:4,name:“hamo”},];
const results=Data.reduce((previous,{id,name})=>{
让index=previous.findIndex(item=>item.id==id);
如果(索引>-1){
上一个[索引].names.push(名称);
}否则{
previous.push({id:id,name:[name]});
}
返回上一个;
},[]);

log(结果);
您可以通过查找索引来减少数组

const Data=[{id:1,name:“jack”},{id:1,name:“george”},{id:1,name:“morries”},{id:2,name:“abdo”},{id:2,name:“ezz”},{id:3,name:“mostafa”},{id:4,name:“hamo”},];
const results=Data.reduce((previous,{id,name})=>{
让index=previous.findIndex(item=>item.id==id);
如果(索引>-1){
上一个[索引].names.push(名称);
}否则{
previous.push({id:id,name:[name]});
}
返回上一个;
},[]);
console.log(结果);