Javascript 如何编辑对象数组?

Javascript 如何编辑对象数组?,javascript,arrays,Javascript,Arrays,我想编辑JavaScript对象 我有一个像这样的JavaScript对象 data_without_id = [ 0: {id: 1, name: "Mary", age: null} 1: {id: 2, name: "Bob", age: 33} 2: {id: 1, name: "Kelly", age: 40} ] 我想把这个对象转换成

我想编辑JavaScript对象

我有一个像这样的JavaScript对象

data_without_id = [
                   0: {id: 1, name: "Mary", age: null}
                   1: {id: 2, name: "Bob", age: 33}
                   2: {id: 1, name: "Kelly", age: 40}
                  ]
我想把这个对象转换成这个

data_without_id = [
                   0: {id: 1, name: "Kelly", age: 40}
                   1: {id: 2, name: "Bob", age: 33}
                  ]
我需要做的是:

  • 分组依据
    id

  • 获取最新值


  • 我尝试使用
    Array.prototype.reduce()
    ,但无法得到所需的结果…

    使用函数
    reduce
    如下所示:

    函数
    reduce
    用于分组,函数
    Object.values
    用于提取值

    let data_without_id=[{id:1,name:“Mary”,age:null},{id:2,name:“Bob”,age:33},{id:1,name:“Kelly”,age:40},
    result=Object.values(没有_id.reduce的数据((a,{id,name,age})=>{
    a[id]={id,姓名,年龄};
    返回a;
    },Object.create(null));
    console.log(结果)

    .as console wrapper{max height:100%!important;top:0;}
    您可以使用
    .reduce
    ,方法是将累加器设置为具有
    id
    键的对象。通过这种方式,您可以覆盖以前看到的具有相同
    id
    的任何对象,然后使用
    Object.values
    获取对象数组:

    const data_无_id=[{id:1,姓名:“玛丽”,年龄:null},{id:2,姓名:“鲍勃”,年龄:33},{id:1,姓名:“凯利”,年龄:40},
    res=对象值(没有id的数据减少((acc,obj)=>
    (附件[obj.id]=附件,附件)
    , {}));
    
    控制台日志(res)
    您只需使用
    for/of
    循环创建数据的副本,其中具有特定id的最后一个对象始终是输出数据中返回的对象。这避免了代码的“分组”部分,但仍然返回正确的数据

    const data\u无\u id=[
    {id:1,姓名:“玛丽”,年龄:null},
    {身份证号码:2,姓名:“鲍勃”,年龄:33},
    {id:1,姓名:“Kelly”,年龄:40}
    ];
    函数lastId(arr){
    常数输出=[];
    对于(让arr的obj){
    //如果不创建每个对象的副本,则返回
    //数据将只包含对原始数据的引用
    //数据。将反映原始数据中的更改
    //在返回的数据中
    out[obj.id-1]={……obj};
    }
    返回;
    }
    const lastIds=lastId(数据不带id);
    
    console.log(lastIds)非常感谢您的快速响应!它工作得很好!