Ramda - 从多个对象中获取一个数组
Ramda - Get one array from multiple objects
我正在尝试使用 ramda 从多个对象中提取节点数组。
示例数据:
const testData = {
"117590": {
"id": 117590,
"nodes": [
117864,
117865,
117866
]
},
"117591": {
"id": 117591,
"nodes": [
117867,
117868
]
}
}
我尝试使用这样的查询:R.pluck('nodes', testData);
但结果我得到了:
{"117590": [117864, 117865, 117866], "117591": [117867, 117868]}
如何将所有节点合并到一个数组中?
这是我的 Ramda editor link
选项 1:使用 R.values 转换为数组,然后提取并展平结果。
选项 2:使用 R.values,然后得到 nodes
并使用 R.chain 和 R.prop 展开。
const { pipe, values, pluck, flatten, chain, prop } = R
const fn1 = pipe(values, pluck('nodes'), flatten)
const fn2 = pipe(values, chain(prop('nodes')))
const testData = {"117590":{"id":117590,"nodes":[117864,117865,117866]},"117591":{"id":117591,"nodes":[117867,117868]}}
console.log(fn1(testData))
console.log(fn2(testData))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js" integrity="sha512-rZHvUXcc1zWKsxm7rJ8lVQuIr1oOmm7cShlvpV0gWf0RvbcJN6x96al/Rp2L2BI4a4ZkT2/YfVe/8YvB2UHzQw==" crossorigin="anonymous"></script>
分两步想想就可以了。首先获取对象的值,然后获取它们的 node
属性。获取这些节点的最简单方法是使用 chain (prop ('node'))
。这两个步骤可以结合 pipe
或 compose
.
const getNodes = pipe (values, chain(prop('nodes')))
const testData = {117590: {id: 117590, nodes: [117864, 117865, 117866]}, 117591: {id: 117591, nodes: [117867, 117868]}}
console .log (getNodes (testData))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js"></script>
<script> const {pipe, values, chain, prop} = R </script>
我正在尝试使用 ramda 从多个对象中提取节点数组。
示例数据:
const testData = {
"117590": {
"id": 117590,
"nodes": [
117864,
117865,
117866
]
},
"117591": {
"id": 117591,
"nodes": [
117867,
117868
]
}
}
我尝试使用这样的查询:R.pluck('nodes', testData);
但结果我得到了:
{"117590": [117864, 117865, 117866], "117591": [117867, 117868]}
如何将所有节点合并到一个数组中? 这是我的 Ramda editor link
选项 1:使用 R.values 转换为数组,然后提取并展平结果。
选项 2:使用 R.values,然后得到 nodes
并使用 R.chain 和 R.prop 展开。
const { pipe, values, pluck, flatten, chain, prop } = R
const fn1 = pipe(values, pluck('nodes'), flatten)
const fn2 = pipe(values, chain(prop('nodes')))
const testData = {"117590":{"id":117590,"nodes":[117864,117865,117866]},"117591":{"id":117591,"nodes":[117867,117868]}}
console.log(fn1(testData))
console.log(fn2(testData))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js" integrity="sha512-rZHvUXcc1zWKsxm7rJ8lVQuIr1oOmm7cShlvpV0gWf0RvbcJN6x96al/Rp2L2BI4a4ZkT2/YfVe/8YvB2UHzQw==" crossorigin="anonymous"></script>
分两步想想就可以了。首先获取对象的值,然后获取它们的 node
属性。获取这些节点的最简单方法是使用 chain (prop ('node'))
。这两个步骤可以结合 pipe
或 compose
.
const getNodes = pipe (values, chain(prop('nodes')))
const testData = {117590: {id: 117590, nodes: [117864, 117865, 117866]}, 117591: {id: 117591, nodes: [117867, 117868]}}
console .log (getNodes (testData))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js"></script>
<script> const {pipe, values, chain, prop} = R </script>