首页 > 解决方案 > 如何在javascript中将对象值数组与对象键进行比较和更改

问题描述

我想知道如何在javascript中通过对象值比较和更改数组值

我有一个arrobjobj其中如果 arrobj 值city和 obj 键相同,则更改 arrobj 中的城市值,

var arrobj =[
  {
   "id":1, "name": "xyz", "city":"IN",
   "id":2, "name": "abc", "city":"CA",
   "id":3, "name": "jon", "city":"MY",
    "id":4, "name": "om", "city":"CH",
"id":5, "name": "ken", "city":"JP",
  }
]
var obj={
"CA": "Canada",
"MY": "Myanmmar",
"IN": "India"
}

Expected Output
[
  {
   id:1, name: "xyz", city:"India",
   id:2, name: "abc", city:"Canada",
   id:3, name: "jon", city:"Myanmmar",
  }
]



var arr1 = [];

var result = arrobj.map(e=>{
 return Object.keys(obj).map(i=>{
     if(e.city===i){
      arr1.push({
       ...e,
       city:i
      })
     }
  })
})

console.log(arr1)

标签: javascriptarraysloopsobject

解决方案


使用Array#map,您可以迭代arrobj并更新city它是否具有以下值obj

const 
  arrobj = [
    { id:1, name: "xyz", city:"IN" },
    { id:2, name: "abc", city:"CA" },
    { id:3, name: "jon", city:"MY" },
    { id:4, name: "om", city:"CH" },
    { id:5, name: "ken", city:"JP" }
  ], 
  obj = { "CA": "Canada", "MY": "Myanmmar", "IN": "India" };
  
const res = arrobj.map(({ city, ...e }) => ({ ...e, city: obj[city] || city }));

console.log(res);


推荐阅读