Javascript 如何编辑对象数组?
我想编辑JavaScript对象 我有一个像这样的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} ] 我想把这个对象转换成
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)代码>非常感谢您的快速响应!它工作得很好!