首页 > 其他分享 >遍历数组对象

遍历数组对象

时间:2024-08-15 23:04:35浏览次数:14  
标签:遍历 对象 id item searchId result 数组 data children

前提条件:数组对象中的id唯一

 1 const tree = [
 2     {id: 1},
 3     {id:2, 
 4         children:[
 5             {id: 3, 
 6                 children:[
 7                     {id: 4, 
 8                          children: [
 9                              {id: 5}
10                          ]
11                      }
12                  ]
13               }
14           ]
15      }
16  ]
  1. 面试题-通过id,在上述数据中找出id所在的对象
     1 function getItem(data, searchId){
     2     let result;
     3     if(Array.isArray(data)){
     4         for(let item of data) {
     5             const {id, children} = item;
     6             if (searchId === id) {
     7                 result = item;
     8                 break;
     9             }
    10             if(Array.isArray(children)){
    11                 result = getItem(children, searchId)
    12             }
    13         }
    14     } else {
    15         console.log('没有找到');
    16         return null;
    17     }
    18     return result;
    19 }
  2. 面试题-通过id,获取父节点id
     1 function getParentId(data, searchId, parentId) {
     2     let result;
     3     if(Array.isArray(data)){
     4         for (let item of data) {
     5             const {id, children} = item;
     6             if (id === searchId) {
     7                 result = parentId;
     8                 break;
     9             }
    10             if(Array.isArray(children)){
    11                 result = getParentId(children, searchId, id);
    12             }
    13         }
    14     } else {
    15         return 'null'
    16     }
    17 
    18     return result;
    19 }
  3. 面试题-通过id,获取所有的上级节点id
     1 function getAllParentIds(data, searchId, parentIds = []) {
     2     let result;
     3     if(Array.isArray(data)){
     4         for (let item of data) {
     5             const {id, children} = item;
     6             if (id === searchId) {
     7                 result = parentIds;
     8                 break;
     9             }
    10             if(Array.isArray(children)){
    11                 result = getAllParentIds(children, searchId, parentIds.concat(id));
    12             }
    13         }
    14     } else {
    15         return 'null'
    16     }
    17 
    18     return result;
    19 }

标签:遍历,对象,id,item,searchId,result,数组,data,children
From: https://www.cnblogs.com/dadouF4/p/18362032

相关文章

  • C语言-使用数组法,指针法实现将一个5X5的矩阵中最大的元素放在中心,四个角分别放四个最
    1.题目要求:将一个5X5的矩阵中最大的元素放在中心·,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。2.数组法实现#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>//一、数组法实现intmain(){ intarr[5][5]={ {1,2,3,4,5},......
  • 【代码随想录】一、数组:6.前缀和
    二刷的时候发现更新了一些新的题目,尝试写了写后,发现我完全不会ACM输入输出模式。这两天在补前几天没背的八股,写得不够满意(几乎是完全誊代码了),先放着,后面再补充补充吧。1.题目:44.开发商购买土地#include<iostream>#include<vector>#include<climits>usingnamespacestd......
  • 【代码随想录】一、数组:4.滑动窗口
    1.题目1:209.长度最小的子数组1.1.解法1:暴力解法(已超时)使用两层循环,外层循环确定最小子数组开始的位置(i),内层循环确定最小子数组结束的位置(j)。在每次跳出内层循环时,sum应重置为0。当找到的子数组相加的和等于或大于目标值(target)时,算出此刻子数组的长度(j-i+1),并更新result的值......
  • 【代码随想录】一、数组:5.螺旋矩阵
    本题并不涉及到什么算法,就是模拟过程,但却十分考察对代码的掌控能力。1.题目1:59.螺旋矩阵II1.1.解法1:模拟本题的重点还是像之前的“704.二分查找”,坚持循环不变量原则,即在本题中遍历每条边时,坚持相同的原则。如下是一个示例,即n=5,我们考虑根据圈数和边数来进行遍历:由外圈到内......
  • 高级java每日一道面试题-2024年8月15日-设计模式篇-设计模式与面向对象原则的关系是什
    如果有遗漏,评论区告诉我进行补充面试官:设计模式与面向对象原则的关系是什么?我回答:在设计模式与面向对象原则的关系中,两者紧密相连且相互促进。面向对象的原则为设计模式的形成提供了理论基础和指导思想,而设计模式则是这些原则在特定问题域中的具体实践和实现方式。下......
  • 面向对象设计原则
    面向对象设计原则总结单一职责原则(SRP)不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。一句话总结:不能为图代码量少......
  • KMP算法——理解 next 数组
    !注意!本文与《王道》,《严书》有所不同,字符串均从第0位开始,next数组没有添加常数1。博客为梳理思路所用,难免纰漏,希望不吝赐教。在字符串匹配中,设m为待匹配的主串S长度,n为找寻的模式串T长度。如:在主串S='ababc'中寻找模式串T='abc'则字符串匹配算法返回S中第......
  • Python实现CNN(卷积神经网络)对象检测算法
    目录1.引言2.对象检测的基本原理2.1对象检测的目标2.2常见对象检测方法2.2.1基于滑动窗口的传统方法2.2.2基于区域提议的现代方法2.2.3单阶段检测器2.3本次实现的检测方法3.代码实现3.1环境准备3.2数据准备与预处理3.3构建CNN模型3......
  • 二叉树遍历
    二叉树的遍历是二叉树操作中的一个基本且重要的概念,它指的是按照一定的规则访问二叉树中的每个节点,并且每个节点仅被访问一次。常见的二叉树遍历方式有四种:前序遍历(Pre-orderTraversal)、中序遍历(In-orderTraversal)、后序遍历(Post-orderTraversal)和层序遍历(Level-orderTrave......
  • JSONUtil、JsonArray应用 (全网最全面的解析方式汇总) - 调用第三方接口后,获取的结果
    背景:近期开发的内容涉及到了我们平台对其他平台提供接口的调用,然后也涉及到接口提供方的验签等操作;还有我们的加签操作等。今天记录一下调用三方接口后返回的接口如何解析;怎么拿到自己想要的东西。其实调用三方接口分为几步1、采用哪种方式调用三方接口,这种依赖于第三方......