我想知道如何使用javascript根据嵌套对象中的键获取值
我有一个obj
,其中包含所有国家/地区的清单,并且我嵌套了带有国家/地区代码的对象list
是否可以在嵌套数组list
中添加国家/地区名称
//Expected Output
var result= [{
"cn": "TH",
"name": {
"en": "Thailand"
}
},{
"cn": "IN",
"name": {
"en": "India"
}
}]
```
```
var list=[{
"cn": "TH",
},
{
"cn":"IN",
}]
var obj={
"SG": "Singapore",
"CN": "China",
"TH": "Thailand",
"IN": "India",
"AU": "Australia"
}
答案 0 :(得分:0)
答案 1 :(得分:0)
尝试这样。
var list=[{
"cn": "TH",
},
{
"cn":"IN",
}];
var obj={
"SG": "Singapore",
"CN": "China",
"TH": "Thailand",
"IN": "India",
"AU": "Australia"
};
var output = list.map(
data => (
{...data, name: { en: obj[data.cn]}}
)
)
console.log(output)
答案 2 :(得分:0)
使用方括号表示法,如下所示:
var list=[{"cn":"TH",},{"cn":"IN",}];
var obj={"SG":"Singapore","CN":"China","TH":"Thailand","IN":"India","AU":"Australia"};
const res = list.map(({ cn }) => ({ cn, name: { en: obj[cn] }}));
console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }
ES5语法:
var list = [{"cn":"TH",},{"cn":"IN",}];
var obj = {"SG":"Singapore","CN":"China","TH":"Thailand","IN":"India","AU":"Australia"};
var res = list.map(function(e) {
return { cn: e.cn, name: { en: obj[e.cn] }};
});
console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }
答案 3 :(得分:0)
var result = list.map(country => ({
"cn": country.cn,
"name": {
"en": obj[country.cn]
}
}));
输出
[
{
"cn": "TH",
"name": {
"en": "Thailand"
}
},
{
"cn": "IN",
"name": {
"en": "India"
}
}
]
答案 4 :(得分:0)
有两种方法可以向对象添加新属性:
使用点符号 如果您知道属性的键名,则在此示例中为key3
obj.key3 = "value3";
使用方括号符号 这种形式允许动态给出密钥名称。
obj["key3"] = "value3";
动态确定密钥名称时,将广泛使用此形式。像本例一样:
var getProperty = function (propertyName) {
return obj[propertyName];
};
getProperty("key1");
getProperty("key2");
getProperty("key3");
以您的情况
var list=[{
"cn": "TH",
},
{
"cn":"IN",
}]
list[0].name = "value3";
console.log("******->"+JSON.stringify(list));
输出
{"cn":"TH","name":"value3"},{"cn":"IN"}]
答案 5 :(得分:0)
var list = [{
"cn": "TH",
},
{
"cn": "IN",
}
]
var obj = {
"SG": "Singapore",
"CN": "China",
"TH": "Thailand",
"IN": "India",
"AU": "Australia"
}
const result = list.reduce((acc, curr) => {
acc.push({
...curr,
name: {
en: obj[curr.cn]
}
});
return acc;
}, []);
console.log(result);
答案 6 :(得分:-1)
最简单的方法是映射列表并插入对象,如下所示:
const result = list.map(l => l.name = {en: obj[l.cn]})