[英]Find an element in an array of objects
數組看起來是這樣的:
var arr =
[{name: '1112B',
subname:
[
{name: 'sub_1112B'},
{name: 'sub_1112BA'}
]
},
{name: '2112B',
subname:
[
{name: 'sub_2112B'},
{name: 'sub_2112BA'}
]
}];
執行以下代碼后: arr.map(it => it.subname).find(i => i.name == 'sub_2112BA')
我沒有定義,但它應該是 '2112B'。
我究竟做錯了什么?
arr.map(it => it.subname)
將創建子名的嵌套數組,而subname
() 將返回undefined
因為它遍歷嵌套數組,您可以使用.flat()
然后使用find
但它不會' t 返回包含子名稱的subname
,因為您在subname
數組中進行迭代,因此您可以過濾數組的對象並在每個子名稱數組上使用 find 來檢查是否存在所需的name
arr = [{name: '1112B', subname: [ {name: 'sub_1112B'}, {name: 'sub_1112BA'} ] }, {name: '2112B', subname: [ {name: 'sub_2112B'}, {name: 'sub_2112BA'} ] }]; res=arr.filter(x=>(x.subname.find(y=>y.name=="sub_2112B"))) console.log(res)
在find()
中使用類型安全的等於===
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.