首页 > 解决方案 > 如何在javascript中用arrayobject值替换/更改数组值

问题描述

如何通过 javascript 中的数组值更改嵌套数组对象。

我有数组对象nestobj 和数组arr,如果位置和数组匹配,则替换javascript中的值。

我需要知道如何更改nestobj具有相同变量名的数组对象

var nestobj =[
  {id:1, name: "xyz", place: "CH"},
  {id:2, name: "zen", place: "JP"},
  {id:3, name: "abc", place: "TH"},
  {id:4, name: "ram", place: "MY"},
  {id:5, name: "mike", place: "AU"},
]


var arr=[
  "JP:Japan",
  "CH:Chennai",
  "AU:Australia"
]


Expected Ouput
[
  {id:1, name: "xyz", place: "Chennai"},
  {id:2, name: "zen", place: "Japan"},
  {id:3, name: "abc", place: "TH"},
  {id:4, name: "ram", place: "MY"},
  {id:5, name: "mike", place: "Australia"},
]

arr.map(ii=>{
  var kv = ii.split(':');
  nestobj.map(e=>{
    if(e.place === kv[0]){
   return { 
 ...e,
 place: kv[1]
    }
else{
   ...e,
  place: e.place
  }
   }
  })

})

console.log(nestobj)

标签: javascriptarraysloopsobject

解决方案


这是你的意思吗?

let nestobj =[
    {id:1, name: "xyz", place: "CH"},
    {id:2, name: "zen", place: "JP"},
    {id:3, name: "abc", place: "TH"},
    {id:4, name: "ram", place: "MY"},
    {id:5, name: "mike", place: "AU"},
  ]

  const arr=[
    "JP:Japan",
    "CH:Chennai",
    "AU:Australia",
  ]

  nestobj = nestobj.map((item, index) => {
    for(let i = 0; i < arr.length; i++) {
      const key = arr[i].split(":")[0]
      const value = arr[i].split(":")[1]

      if(item["place"] === key) {
        item["place"] = value
      }
    }
    return item
  })
  
  console.log(nestobj)

新的nestobj将是:

[
  {id:1, name: "xyz", place: "Chennai"},
  {id:2, name: "zen", place: "Japan"},
  {id:3, name: "abc", place: "TH"},
  {id:4, name: "ram", place: "MY"},
  {id:5, name: "mike", place: "Australia"},
]

我建议您使用let(for dynamic variables) 和const(for static variables) 来避免在 Javascript 中提升。


推荐阅读