我有一个projects
列表如下:
projects = [{name: '1',
agencies: ['USA', 'China']},
{name: '2',
agencies: ['Japan', 'Russia']}]
我想得到结果['USA', 'China', 'Japan', 'Russia']
,目前我使用下面的代码,但我想知道是否有更好的解决方案(一行代码)使用map函数:
const agencies = [];
projects.forEach((project) =>
project.agencies.forEach((agency) => {
agencies.push(agency);
})
);
答案 0 :(得分:1)
这是一个简单的单行程来完成这个:
const projects = [{
name: '1',
agencies: ['USA', 'China']
}, {
name: '2',
agencies: ['Japan', 'Russia']
}]
const agencies = [].concat(...projects.map(x => x.agencies));
console.log(agencies)

答案 1 :(得分:1)
返回的地图的长度始终与用于生成它的数组的长度相同。
您可能应该使用reduce来生成不同长度的数组。
尝试:
projects.reduce((acc, project) => [...acc, ...project.agencies], [])
答案 2 :(得分:1)
我会使用destructuring,reduce和concat:
agencies.reduce((res, {agencies}) => res.concat(agencies));