Ramda 从数组中的嵌套对象中获取值
Ramda Get values from nested objects inside array
我正在尝试使用 Ramda 从嵌套对象中获取值,但我才刚刚开始使用它。为了获得我使用的 testArray:
R.find(R.propEq('type', 'checklist'))((data))
Data 是另一个具有不同类型的数组,但我只需要关注 'checklist' 类型。我只想获得 属性 "checked": true.
的项目
这是我要转换的数组。
const testArray = [{
"type": "checklist",
"data": {
"items": [
{ "id": "r-1", "checked": true },
{ "id": "r-2", "checked": false }
]
}
}]
编辑:
我使用了另一个步骤:
R.path(['data', 'items'])
我只得到了可以简单过滤的项目。但我不确定这样做是否正确。
任何帮助将不胜感激。
这是一种方法:
const checkedItems = pipe (
find (propEq('type', 'checklist')),
defaultTo ({data: {items: []}}),
path (['data', 'items']),
filter (prop ('checked'))
)
const testArray = [{type: "checklist", data: {items: [{id: "r-1", checked: true }, {id: "r-2", checked: false}]}}]
console .log (
checkedItems (testArray)
)
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js"></script>
<script>const {pipe, find, propEq, defaultTo, path, filter, prop} = R</script>
Ramda(免责声明:我是它的作者之一)是围绕功能管道的想法设计的,其中一个调用的结果通过管道传输到下一个。在这里,我们使用您开始使用的 propEq
,将其通过管道传递给 defaultTo
调用,如果上一步未找到任何内容,它会给出合理的默认值,然后传递给您使用的 path
语句,然后最后是一个 filter
调用,它只保留那些 checked
属性 是 true
.
的调用
如果您完全确定自己的数据,则可以跳过 defaultTo
步骤。
filter
调用也可以是 filter (propEq ('checked', true))
,但由于 prop ('checked')
会返回一个布尔值,所以我选择了更简单的版本。
我正在尝试使用 Ramda 从嵌套对象中获取值,但我才刚刚开始使用它。为了获得我使用的 testArray:
R.find(R.propEq('type', 'checklist'))((data))
Data 是另一个具有不同类型的数组,但我只需要关注 'checklist' 类型。我只想获得 属性 "checked": true.
的项目这是我要转换的数组。
const testArray = [{
"type": "checklist",
"data": {
"items": [
{ "id": "r-1", "checked": true },
{ "id": "r-2", "checked": false }
]
}
}]
编辑: 我使用了另一个步骤:
R.path(['data', 'items'])
我只得到了可以简单过滤的项目。但我不确定这样做是否正确。
任何帮助将不胜感激。
这是一种方法:
const checkedItems = pipe (
find (propEq('type', 'checklist')),
defaultTo ({data: {items: []}}),
path (['data', 'items']),
filter (prop ('checked'))
)
const testArray = [{type: "checklist", data: {items: [{id: "r-1", checked: true }, {id: "r-2", checked: false}]}}]
console .log (
checkedItems (testArray)
)
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js"></script>
<script>const {pipe, find, propEq, defaultTo, path, filter, prop} = R</script>
Ramda(免责声明:我是它的作者之一)是围绕功能管道的想法设计的,其中一个调用的结果通过管道传输到下一个。在这里,我们使用您开始使用的 propEq
,将其通过管道传递给 defaultTo
调用,如果上一步未找到任何内容,它会给出合理的默认值,然后传递给您使用的 path
语句,然后最后是一个 filter
调用,它只保留那些 checked
属性 是 true
.
如果您完全确定自己的数据,则可以跳过 defaultTo
步骤。
filter
调用也可以是 filter (propEq ('checked', true))
,但由于 prop ('checked')
会返回一个布尔值,所以我选择了更简单的版本。