[英]How to compare and change array of object value with object key in javascript
我想知道如何在javascript中按对象值比较和更改数组值
我有一个arrobj
和obj
,其中如果 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.