gpt4 book ai didi

javascript - 如何使用 ramda.js 将对象数组转换为整数数组并从这些对象中提取值?

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

我正在尝试将一个对象数组转换为一个整数数组,并使用 Ramda.js 从这些对象中提取值。我只需要保留具有 uid 值的节点 participants,但是,我似乎没有正确执行此操作。

我想改造一下

var listObejcts = {
"participants": [
{
"entity": {
"uid": 1
}
},
{
"entity": {
"uid": 2
}
}
]
}

为此:

{
"participants": [1, 2]
}

我试过上面的代码,但没有用。它仍在返回一个对象列表。

var transform = pipe(
over(lensProp('participants'), pipe(
filter(pipe(
over(lensProp('entity'), prop('uid'))
))
))
)

console.log(transform(listObejcts))

有谁知道我怎样才能做到这一点?

可以在此处编辑代码 - https://repl.it/repls/PrimaryMushyBlogs

最佳答案

一种可能性是结合evolvemap ( path ) 像这样:

const transform = evolve({participants: map(path(['entity', 'uid']))})

var listObjects = {participants: [{entity: {uid: 1}}, {entity: {uid: 2}}]}

console.log(transform(listObjects))
<script src="https://bundle.run/ramda@0.26.1"></script><script>
const {evolve, map, path} = ramda </script>

虽然我确定存在基于镜头的解决方案,但这个版本看起来非常简单。

更新

基于 lens 的解决方案当然是可行的。这是一个这样的:

var transform = over(
lensProp('participants'),
map(view(lensPath(['entity', 'uid'])))
)

var listObjects = {participants: [{entity: {uid: 1}}, {entity: {uid: 2}}]}

console.log(transform(listObjects))
<script src="https://bundle.run/ramda@0.26.1"></script><script>
const {over, lensProp, map, view, lensPath} = ramda </script>

关于javascript - 如何使用 ramda.js 将对象数组转换为整数数组并从这些对象中提取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55444417/

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