通过地图

时间:2017-05-16 07:58:34

标签: javascript arrays object assign

我的对象包含国家/地区代码和国家/地区名称,如下所示:

countries = {'CA': {name: Canada}, 'GR': {name: Greece}, 'SG': {name: Singapore}}

然后我有另一个这样的数组:

markets = ["CA", "GR", "SG"]

然后我想为这个形状的每个市场数组实例创建一个对象数组: {label:...,value:....} 所以我正在写

const martOptions = markets.map((i) => {
 return {label: i, value: i}
})

但是对于标签我不想分配CA或GR。我想以某种方式在countries对象中找到国家/地区的名称,并将其添加到标签中,以便具有以下内容: {label: Canada, value: CA} and not {label: CA, value: CA}。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您只需返回countries对象,即可获取与当前国家/地区代码相关联的名称:

const countries = {'CA': {name: 'Canada'}, 'GR': {name: 'Greece'}, 'SG': {name: 'Singapore'}}

const markets = ["CA", "GR", "SG"]

const martOptions = markets.map((i) => ({label: countries[i].name, value: i}))

console.log(martOptions)

请注意,如果countries[i].name数组中的代码在markets对象中不存在,countries会给您一个错误。

(另请注意,如果将其放在括号中,则可以直接返回新对象,而不需要箭头函数中的{ return ... }结构。)