我需要从对象数组的多个键中获取值。
trip = [
{sp: 'cbe', ep: 'tpr'},
{sp: 'tpr', ep: 'erd'},
{sp: 'erd', ep: 'blr'}
];
输出应为["cbe", "tpr", "erd", "blr"]
我尝试过的内容作为答案发布,并且可以使用,但是我使用了两个映射来获得所需的输出。我知道应该有比我的答案更好的方法。
这是我在code上的闪电战
答案 0 :(得分:3)
可以在这里使用新的flatMap函数,但是请注意,浏览器支持有限
trip = [
{sp: 'cbe', ep: 'tpr'},
{sp: 'tpr', ep: 'erd'},
{sp: 'erd', ep: 'blr'}
];
res = [ ...new Set( trip.flatMap(Object.values) )]
console.log(res)
答案 1 :(得分:1)
const trip = [
{sp: 'cbe', ep: 'tpr'},
{sp: 'tpr', ep: 'erd'},
{sp: 'erd', ep: 'blr'}
];
const r = trip.map( m => {
return m.sp
});
const s = trip.map( m => {
return m.ep
});
console.log(Array.from(new Set(r.concat(s))));
答案 2 :(得分:1)
这是另一种方式:(已更新为聚合所有键而不是显式键)
const trip = [
{sp: 'cbe', ep: 'tpr'},
{sp: 'tpr', ep: 'erd'},
{sp: 'erd', ep: 'blr'}
];
const t = Array.from(trip.reduce((a, el) => {
for (let key in el) a.add(el[key]);
return a;
}, new Set()));
console.log(t);
答案 3 :(得分:0)
如果您还可以具有不太易读的一线……
trip = [{
sp: 'cbe',
ep: 'tpr'
},
{
sp: 'tpr',
ep: 'erd'
},
{
sp: 'erd',
ep: 'blr'
}
];
const res = [...new Set([].concat.apply([], trip.map(item => Object.values(item))))];
console.log(res);