首页 > 解决方案 > 从数组对象中获取特定值 ES6 方式

问题描述

我有一个像

var d = [{
  "AD": {
    "name": "Andorra",
    "native": "Andorra",
    "phone": "376",
    "continent": "EU",
    "capital": "Andorra la Vella",
    "currency": "EUR",
  }
}, {
  "AE": {
    "name": "United Arab Emirates",
    "native": "دولة الإمارات العربية المتحدة",
    "phone": "971",
    "continent": "AS",
    "capital": "Abu Dhabi",
    "currency": "AED",
  }
}, {
  "AF": {
    "name": "Afghanistan",
    "native": "افغانستان",
    "phone": "93",
    "continent": "AS",
    "capital": "Kabul",
    "currency": "AFN",
  }
}] 

我想使用 ES6 高阶函数获取每个对象的名称,而不使用 for 或 foreach。

我试过filtermap不知道什么时候用什么

标签: javascriptarraysjsonnode.jsecmascript-6

解决方案


您可以使用Array.prototype.reduce()以下方法轻松实现:

var d = [{
  "AD": {
    "name": "Andorra",
    "native": "Andorra",
    "phone": "376",
    "continent": "EU",
    "capital": "Andorra la Vella",
    "currency": "EUR",
  }
}, {
  "AE": {
    "name": "United Arab Emirates",
    "native": "دولة الإمارات العربية المتحدة",
    "phone": "971",
    "continent": "AS",
    "capital": "Abu Dhabi",
    "currency": "AED",
  }
}, {
  "AF": {
    "name": "Afghanistan",
    "native": "افغانستان",
    "phone": "93",
    "continent": "AS",
    "capital": "Kabul",
    "currency": "AFN",
  }
}] 

const names = d.reduce((acc, curr) => {
  const keys = Object.keys(curr);
  const name = curr[keys[0]].name;
  acc.push(name)
  return acc;
}, []);

console.log(names)


推荐阅读