gpt4 book ai didi

javascript - 在javascript对象中平面数组的函数式编程方法

转载 作者:行者123 更新时间:2023-11-30 11:11:27 25 4
gpt4 key购买 nike

我是 javascript 的新手,我正在尝试展平保存在对象数组中的对象中的属性。

[
{
addr: addrvalue1,
events: [1,2],
},
{
addr: addrvalue2,
events: [1],
}
]

我想把上面的对象转换成

[{
addr: addrvalue1,
events: 1,
}
{
addr: addrvalue1,
events: 2,
}
{
addr: addrvalue2,
events: 1,
}]

然后按事件值对它们进行排序,所以它们最终会像

[{
addr: addrvalue1,
events: 1,
}
{
addr: addrvalue2,
events: 1,
}
{
addr: addrvalue1,
events: 2,
}
]

目前我正在使用多个 for 循环来执行此操作,但我认为会有一些更优雅的方法来执行此操作。提前致谢。

最佳答案

您可以使用 Array.flatMap()迭代对象并展平结果,以及内部 Array.map()创建事件对象数组。然后您可以按事件对它们进行排序。

const data = [{"addr":"addrvalue1","events":[1,2]},{"addr":"addrvalue2","events":[1]}]

const result = data.flatMap(({ addr, events }) => events.map(event => ({
event,
addr
})))
.sort((o1, o2) => o1.event - o2.event)

console.log(result)

关于javascript - 在javascript对象中平面数组的函数式编程方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53458480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com