繁体   English   中英

如何在javascript中比较和更改对象值数组与对象键

[英]How to compare and change array of object value with object key in 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)

使用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);

这可能是您正在寻找的解决方案

https://jsfiddle.net/sd7102v9/1/

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"
}


var result = arrobj.map(e=>
{
    let city = e.city;
    if(typeof obj[city] !== 'undefined')
        e.city = obj[city];
    return e;
})

console.log(arrobj)

以下确保原始数组保持不变,并且只返回那些可以解析城市名称的结果:

 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"}; res=arrobj.reduce((a,c)=>(obj[c.city] && a.push({...c,city:obj[c.city]}),a), []); console.log(res)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM