按对象属性/字段从对象数组中获取对象:函数方式?(JavaScript/ES6)
我有一个JavaScript对象数组(基本上来自web服务的JSON数据),其中每个对象代表一个国家:按对象属性/字段从对象数组中获取对象:函数方式?(JavaScript/ES6),javascript,arrays,dictionary,ecmascript-6,functional-programming,Javascript,Arrays,Dictionary,Ecmascript 6,Functional Programming,我有一个JavaScript对象数组(基本上来自web服务的JSON数据),其中每个对象代表一个国家: let countries = [ ..., { "id": 46, "type": "COUNTRY", "name": "Cape Verde", "isoCode": "CV&qu
let countries = [
...,
{
"id": 46,
"type": "COUNTRY",
"name": "Cape Verde",
"isoCode": "CV",
"isoNbr": "132"
},
{
"id": 52,
"type": "COUNTRY",
"name": "Christmas Island",
"isoCode": "CX",
"isoNbr": "162"
},
{
"id": 63,
"type": "COUNTRY",
"name": "Cyprus",
"isoCode": "CY",
"isoNbr": "196"
},
{
"id": 64,
"type": "COUNTRY",
"name": "Czech Republic",
"isoCode": "CZ",
"isoNbr": "203"
},
{
"id": 88,
"type": "COUNTRY",
"name": "Germany",
"isoCode": "DE",
"isoNbr": "276"
},
{
"id": 66,
"type": "COUNTRY",
"name": "Djibouti",
"isoCode": "DJ",
"isoNbr": "262"
},
...
];
问题:
您如何最好地通过isoCode
在此处获取条目
也许我必须事先将其转换为map(),其中isoCode
是键,值是未更改的对象
let mapOfCountries = turn_into_map(countries);
selectedCountry = mapOfCountries[this.selectedEntity.countryCode];
// or even simpler:
// selectedCountry = mapOfCountries['DE'];
如何在JavaScript/ES6中最好地做到这一点?也许是功能性的方法?我不想在这里使用for循环并手动检查。Yuk.只需使用:
const countries=[{id:46,类型:“国家”,名称:“佛得角”,等码:“CV”,等码:“132”},{id:52,类型:“国家”,名称:“圣诞岛”,等码:“CX”,等码“162”},{id:63,类型:“国家”,名称:“塞浦路斯”,等码:“CY”,等码:“196”},{id:64,类型:“国家”,名称:“捷克共和国”,等码:“CZ”,等码:“203”},{id:88,类型:“国家”,名称:“德国”,等码:“DE”,isoNbr:“276”},{id:66,类型:“国家”,名称:“吉布提”,isoCode:“DJ”,isoNbr:“262”}];
console.log(countries.find(c=>c.isoCode==='DJ'))
您可以使用它创建地图,然后只需按国家代码访问地图,例如
const mapOfCountries = Object.fromEntries(
countries.map(o => [o.isoCode, o])
);
console.log(mapOfCountries['DE'])
let countries=[
{id:46,类型:“国家”,名称:“佛得角”,等位代码:“CV”,等位代码:“132”},
{id:52,类型:“国家”,名称:“圣诞岛”,等位代码:“CX”,等位代码:“162”},
{id:63,类型:“国家”,名称:“塞浦路斯”,等位代码:“CY”,等位编号:“196”},
{id:64,类型:“国家”,名称:“捷克共和国”,等位代码:“CZ”,isoNbr:“203”},
{id:88,类型:“国家”,名称:“德国”,等位代码:“DE”,等位代码:“276”},
{id:66,类型:“国家”,名称:“吉布提”,等位代码:“DJ”,isoNbr:“262”}
];
const mapOfCountries=Object.fromEntries(
countries.map(o=>[o.isoCode,o])
);
console.log(mapOfCountries['DE']);
console.log(mapOfCountries['CZ'])
将其转换为映射或使用.find()
-省去了编写for循环的麻烦。现在,这似乎是我通常缺少的东西。