根据javascript中的对象键获取值

时间:2019-06-26 04:28:13

标签: javascript html arrays object

我想知道如何使用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"
}

7 个答案:

答案 0 :(得分:0)

是的,只有一行代码

var result = list.map(l => ({...l, name: { en: obj[l.cn]}}))

工作sample

答案 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]})