JS:如何根据对象属性更改对象属性的值
Posted
技术标签:
【中文标题】JS:如何根据对象属性更改对象属性的值【英文标题】:JS : How to change the value of an object's property according to that object attribute 【发布时间】:2019-03-09 01:14:40 【问题描述】:我有这样的 JSON 数据:
inputData = [
id : 179849, name : alex , lastname: sanchez,
id : 788539, name : Paul, lastname: bearer,
id : 282169, name : Jean, lastname: nobel,
...
id : 632785, name : Maria, lastname: parak
]
我需要根据对象的id值搜索某个对象(例如:788539)
并更改其 name 属性的值 -> name 变成 : bruno
数据会变成:
resultData= [
id : 179849, name : alex , lastname: sanchez,
id : 788539, name : bruno, lastname: bearer, /* THIS ONE*/
id : 282169, name : Jean, lastname: nobel,
...
id : 632785, name : Maria, lastname: parak
]
过滤/映射我的数据以进行此类修改的最简单方法是什么?
【问题讨论】:
resultData.find(o => o.id === 788539).name = "bruno"
Find and replace value inside an array of objects javascript的可能重复
你提到了“过滤器/映射”,而 JS 数组恰好有两个方便的方法,这些方法;)
【参考方案1】:
resultData= [
id : 179849, name : alex , lastname: sanchez,
id : 788539, name : bruno, lastname: bearer, /* THIS ONE*/
id : 282169, name : Jean, lastname: nobel,
...
id : 632785, name : Maria, lastname: parak
];
id = 788539;
resultData.forEach(ele=>
if(ele.id == id)
ele.name = 'bruno'
);
console.log(resultData);
【讨论】:
FWIW,即使找到对象,这也会迭代整个数组。如果 ID 不是唯一的,这是必要的,但如果它是唯一的,如果列表很大,这会浪费时间。【参考方案2】:一些替代方案,Felix Kling 提到的可能需要polyfill:
// Mentioned by Felix Kling
inputData.find(x => x.id === 788539)
.name = 'Bruno'
您也可以使用for of:
for (let item of inputData)
if (item.id === 788539)
item.name = 'Bruno'
break
【讨论】:
以上是关于JS:如何根据对象属性更改对象属性的值的主要内容,如果未能解决你的问题,请参考以下文章