繁体   English   中英

在对象数组中查找元素

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM