Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按对象属性/字段从对象数组中获取对象:函数方式?(JavaScript/ES6)_Javascript_Arrays_Dictionary_Ecmascript 6_Functional Programming - Fatal编程技术网

按对象属性/字段从对象数组中获取对象:函数方式?(JavaScript/ES6)

按对象属性/字段从对象数组中获取对象:函数方式?(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

我有一个JavaScript对象数组(基本上来自web服务的JSON数据),其中每个对象代表一个国家:

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循环的麻烦。现在,这似乎是我通常缺少的东西。