[英]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.