gpt4 book ai didi

javascript - GroupBy 并以无点样式减少对象数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:00:59 24 4
gpt4 key购买 nike

我最近开始使用 Ramda 并试图找到一种无点方式来编写减少对象数组的方法。

这是对象数组:

const someObj = [
{
name: 'A',
city: 1,
other: {
playtime: 30
}
},
{
name: 'B',
city: 2,
other: {
playtime: 20
}
},
{
name: 'c',
city: 1,
other: {
playtime: 20
}
}
];

我正在尝试使用 ramda 来减少对象像

这样的 poinfree 风格
{
'1': {
count: 2,
avg_play_time: 20 + 30 / count
},
'2': {
count: 1,
avg_play_time: 20 / count
}
}

我可以使用数组 reduce 方法来完成,但不确定如何以 ramda pointfree 样式编写相同的方法。任何建议将不胜感激。

最佳答案

一个解决方案是做这样的事情:

// An optic to extract the nested playtime value
// Coupled with a `lift` operation which allows it to be applied over a collection
// Effectively A -> B => A[] -> B[]
const playtimes = R.lift(R.path(['other', 'playtime']))

R.pipe(
// Group the provided array by the city value
R.groupBy(R.prop('city')),
// Return a body specification which computes each property based on the
// provided function value.
R.map(R.applySpec({
count: R.length,
average: R.pipe(playtimes, R.mean)
}))
)(someObj)

关于javascript - GroupBy 并以无点样式减少对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55409732/

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