【问题标题】:JS : How to change the value of an object's property according to that object attributeJS:如何根据对象属性更改对象属性的值
【发布时间】: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}
]

过滤/映射我的数据以进行此类修改的最简单方法是什么?

【问题讨论】:

标签: javascript json rest typescript ecmascript-6


【解决方案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
  }
}

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多