如何找到一个嵌套在数组中的单个对象? 这是有效的代码。但是[0]在返回null或空数组时并不是真的保存。
this.subscription = state.subscriptionsState.subscriptions
.map(subs => subs.subscriptions.find(sub => sub.id === subscriptionId))[0];
有更好/更好的方式吗?
编辑: 输入数据:
state.subscriptionsState.subscriptions = [
{
"name": "name",
"type": "type",
"subscriptions": [{
"id": 123456,
}]
}
]
答案 0 :(得分:2)
您可以reduce
将Array基于仅包含订阅的1D数组。
从那时起,这是一个简单的.find()
,如果找不到任何内容,则会返回undefined
,如果找不到内容,则返回subscription
。
'use strict'
const items =[
{
"name": "name",
"type": "type",
"subscriptions": [{
"id": 123456,
}]
}
]
const result = items
.reduce((arr, item) => arr.concat(item.subscriptions), [])
.find(sub => sub.id === 123456)
console.log(result)
如果基本数组为空,或者如果任何第一级项subscriptions
Array
属性为空,则不会抛出任何错误,它将返回undefined
。
答案 1 :(得分:0)
如果您有ES6:
,可以使用destructuring assignment来简化此操作const { subscriptionsState: { subscriptions } } = state
this.subscription = subscriptions.find(s => s.id === subscriptionId)