Javascript 以ES6方式从数组的对象获取特定值
我有一个像Javascript 以ES6方式从数组的对象获取特定值,javascript,arrays,json,node.js,ecmascript-6,Javascript,Arrays,Json,Node.js,Ecmascript 6,我有一个像 var d = [{ "AD": { "name": "Andorra", "native": "Andorra", "phone": "376", "continent": "EU", "capital": "Andorra la Vella", "currency": "EUR", } }, { "AE": { "name": "United Arab Emirates", "native": "دولة
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
我尝试了
过滤器
和映射
,但不知道何时使用什么您可以通过以下方式轻松实现:
var d=[{
“广告”:{
“名称”:“安道尔”,
“本地人”:“安道尔”,
“电话”:“376”,
“大陆”:“欧盟”,
“首都”:“安道尔首都”,
“货币”:“欧元”,
}
}, {
“AE”:{
“名称”:“阿拉伯联合酋长国”,
“本地人”:“本地人”,
“电话”:“971”,
“大陆”:“作为”,
“首都”:“阿布扎比”,
“货币”:“AED”,
}
}, {
“AF”:{
“姓名”:“阿富汗”,
“本地人”:“本地人”,
“电话”:“93”,
“大陆”:“作为”,
“首都”:“喀布尔”,
“货币”:“AFN”,
}
}]
常量名称=d.reduce((acc,curr)=>{
常量键=对象键(当前);
const name=curr[keys[0]].name;
附件推送(名称)
返回acc;
}, []);
console.log(名称)
实现这一点的简单方法是:
var d=[{
“广告”:{
“名称”:“安道尔”,
“本地人”:“安道尔”,
“电话”:“376”,
“大陆”:“欧盟”,
“首都”:“安道尔首都”,
“货币”:“欧元”,
}
}, {
“AE”:{
“名称”:“阿拉伯联合酋长国”,
“本地人”:“本地人”,
“电话”:“971”,
“大陆”:“作为”,
“首都”:“阿布扎比”,
“货币”:“AED”,
}
}, {
“AF”:{
“姓名”:“阿富汗”,
“本地人”:“本地人”,
“电话”:“93”,
“大陆”:“作为”,
“首都”:“喀布尔”,
“货币”:“AFN”,
}
}]
d、 地图(项目=>{
console.log(Object.keys(item));
})
如果每个对象只有一个关键点(AD、AE、AF…),则可以使用以下方法:
const d=[{
广告:{
名称:“安道尔”,
}
}, {
AE:{
名称:“阿拉伯联合酋长国”,
}
}, {
AF:{
名称:“阿富汗”,
},
}];
const reduced=d.map(x=>x[Object.keys(x)[0]].name);
控制台日志(减少)代码>每个物体的名称都表示安道尔、阿拉伯联合酋长国和阿富汗。这是一个可怕的结构。不要在同一数组中的对象中使用不同的属性。与数组.map
相比,为什么要使用数组.reduce
?对不起,这不是OP要求的