首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从对象数组内的对象数组中搜索值?

如何从对象数组内的对象数组中搜索值?
EN

Stack Overflow用户
提问于 2020-09-30 02:13:46
回答 2查看 54关注 0票数 3

我有一个对象数组,其中每个对象都有一个对象的内部数组,它又有一个对象的内部数组,它可以到达我想要过滤和显示的内部对象的任何级别。

代码语言:javascript
运行
复制
obj = [{ name: "apple", subGroups:  [{ name: "apple-a", subGroups: { name: "apple-b", subGroups:  [{ name: "apple-c", subGroups: { name: "apple-d", subGroups:[]}}]}}]}
{ name: "orange", subGroups: [{ name: "orange-a", subGroups: { name: "orange-b", subGroups:  [{ name: "orange-c", subGroups: { name: "orange-d", subGroups:[]}}]}}]}
{ name: "mango", subGroups:  [{ name: "123", subGroups: []}]}
{ name: "grapes", subGroups:  [{ name: "123", subGroups: []}]}
{ name: "pear", subGroups:  [{ name: "123", subGroups: []}]}]

搜索值是动态的‘orange d’,

代码语言:javascript
运行
复制
searchvalue = 'orange-d';
result = { name: "orange-d", subGroups:[]}

 const newArr = obj.map(obj => {
      return obj.name === searchvalue;
    }).flat();

我已经尝试了过滤,地图,平面,但我不能找到输出,请帮助

EN

Stack Overflow用户

发布于 2020-09-30 02:58:17

附注:如果您重新考虑一下递归结构,可能会更好。对于解决方案,您应该使用某种递归,如下所示:

代码语言:javascript
运行
复制
var obj = [
  { name: "apple", subGroups:  [
    { name: "apple-a", subGroups: [
      { name: "apple-b", subGroups:  [
        { name: "apple-c", subGroups: [
          { name: "apple-d", subGroups:[]}
        ]}
      ]}
    ]}
  ]},
  { name: "orange", subGroups: [
    { name: "orange-a", subGroups: [
      { name: "orange-b", subGroups:  [
        { name: "orange-c", subGroups: [
          { name: "orange-d", subGroups:[]}
        ]}
      ]}
    ]}
  ]},
  { name: "mango", subGroups:  [
    { name: "123", subGroups: []}
  ]},
  { name: "grapes", subGroups:  [
    { name: "123", subGroups: []}
  ]},
  { name: "pear", subGroups:  [
    { name: "123", subGroups: []}
  ]}
];

var searchvalue = 'orange-d';

function findName(array, name) {
  let result = {};
  
  if(!(Array.isArray(array) && array.length))
    return result;
  
  for(let item of array) {
    if(item.name === name) return item;
    
    result = findName(item.subGroups, name);
    
    if (result && result.name === name) return result;
  }
  
  return result;
}

console.log(findName(obj, searchvalue));

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64125324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档