[英]ES6 get nested object in array
如何找到深深嵌套在數組中的單個對象? 這是有效的代碼。 但是當[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,
}]
}
]
您可以reduce
基本數組reduce
為僅包含預訂的一維數組。
從那時起,它是一個簡單的.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)
如果基本Array為空,或者如果任何第一級項目subscriptions
Array
屬性為空,則這將不會引發任何錯誤,它將僅返回undefined
。
如果您擁有ES6,則可以使用解構分配來簡化此操作:
const { subscriptionsState: { subscriptions } } = state
this.subscription = subscriptions.find(s => s.id === subscriptionId)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.