javascript - 从数组对象中获取特定值 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。
我试过filter
但map
不知道什么时候用什么
解决方案
您可以使用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)
推荐阅读
- css - R Shiny CSS:在具有多个绝对面板的应用程序中启用 x 和 y 方向的滚动
- vue.js - 使用 vue.js 覆盖的应用程序测试自动化方法
- ruby-on-rails - 在 Ruby on Rails 中的 PDF 请求期间呈现 HTML 模板
- python - 第二个位置参数在哪里?
- spring - 如何配置@ComponentScan 以扫描特定包并从另一个包中获取单个类?
- python - How to find the correct API of a website?
- vscode-settings - 是否可以在 VS Code 中显示字体的替代字符?
- javascript - 在 PHP 或 Laravel 上启动动态 Web 控制台
- javascript - 如何有条件地为var赋值
- python - 熊猫,根据其他列创建“订单”列