0

我有一个像

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不知道什么时候用什么

4

3 回答 3

0

您可以使用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)

于 2018-09-21T12:38:13.420 回答
-1

实现这一目标的简单方法对我来说:

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",
  }
}] 

d.map(item => {
	console.log(Object.keys(item));
})

于 2018-09-21T12:38:51.817 回答
-1

如果每个对象只有一个键(AD、AE、AF ...),您可以使用类似:

const d = [{
  AD: {
    name: 'Andorra',
  }
}, {
  AE: {
    name: 'United Arab Emirates',
  }
}, {
  AF: {
    name: 'Afghanistan',
  },
}];

const reduced = d.map(x => x[Object.keys(x)[0]].name);

console.log(reduced);

如果可以有多个键(AD,AE,...),您可以使用以下内容:

const d = [{
  AD: {
    name: 'Andorra',
  },

  DF: {
    name: 'Paris',
  },
}, {
  AF: {
    name: 'Afghanistan',
  },
}];

const reduced = d.reduce((tmp, x) => [
  ...tmp,
  
  ...Object.values(x).map(y => y.name),
], []);

console.log(reduced);

于 2018-09-21T12:40:37.450 回答