我试图用几行代码实现以下结果。
预期结果:
[{
active: true,
id: 1,
name: "California",
country: USA
}, {
active: true,
id: 2,
name: "New York",
country:"USA"
},...
{
active: true,
id: 4,
name: "Moscow",
country:"Russia"
}, ....]
这是我尝试过的,但结果中又缺少了一个属性country
。希望有最短和有效的方法来实现这一点。谢谢您的回复。
const obj = [
{
country: "USA",
cities: ["California", "New York", "Austin"]
},
{
country: "Russia",
cities: ["Moscow", "kazan", "Samara"]
}
];
//here the map of country is not there, wondering how to achieve this.
//obj.map(y => y.country).flatMap(x => x.cities)
const aa = obj.flatMap(x => x.cities)
.map((str, index) => ({ name: str, id: index + 1, active:true}));
console.log(aa)
4条答案
按热度按时间vmjh9lq91#
上面贝赫拉姆和Ori的问题是生成的索引不正确;它将产生1,2,3,1,2,3:
而是从Map器中删除索引值:
cx6n0qe32#
首先,您需要另一个
.map
来将每个城市与其国家联系起来。你也可以考虑命令式版本,虽然功能不太强大,但更容易理解。
afdcj2ne3#
如果需要一行程序,可以将id存储在父匿名函数中(但我不建议这样做,因为这样可读性较差)
tzdcorbm4#
按照以下方式: