首页 > 其他分享 >JS 根据key查找对象数组中符合的一项 返回对象(递归)

JS 根据key查找对象数组中符合的一项 返回对象(递归)

时间:2023-04-12 19:36:14浏览次数:40  
标签:jsonObj 对象 value JS let key null children

在一个复杂的数组对象数据中(嵌套多层),通过key值返回对应的对象

1 方法:

parseJson(jsonObj, key, value) {
      // 循环所有键
      let array = []
      for (let v in jsonObj) {
        let element = jsonObj[v]
        // 1.判断是对象或者数组
        if (typeof (element) == 'object') {
          let result =  this.parseJson(element, key, value)
          if(result) return result
        } else {
          if (v == key) {
            if (element == value) return jsonObj
          }
        }
      }
    },

  2、方法使用
举个例子:

  let arr =[
      {
        key: 1,
        value: 'a',
        children: null
      },
      {
        key: 2,
        value: 'b',
        children: null
      },
      {
        key: 3,
        value: 'c',
        children: [
          {
            key: 4,
            value: 'c-1',
            children: null
          },
          {
            key: 5,
            value: 'c-2',
            children: null
          },
          {
            key: 6,
            value: 'c-1',
            children: [
              {
                key: 7,
                value: 'c-1-1',
                children: null
              },
              {
                key: 8,
                value: 'c-1-2',
                children: null
              },
            ]
          }
        ]
      }
    ]

  直接调用传相对应的参数即可:

 

 

标签:jsonObj,对象,value,JS,let,key,null,children
From: https://www.cnblogs.com/chccee/p/17310960.html

相关文章

  • js入门
    js的基础JavaScript(简称JS”)是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。javascript又名ECMAscriptECMA是什么?1、全称:Europeancomputermanufacturersassociation欧洲计算机制造联合会;2、它的标准名单中的:ECMA—262脚本语言的规范:规范化脚本语言,......
  • 对象数组
    对象数组对象数组的基本介绍代码实例Person类publicclassPerson{privateStringname;privateintage;publicPerson(){}publicPerson(Stringname,intage){this.name=name;this.age=age;}publicStri......
  • taro 3.0 官方模板运行报错 插件依赖 "@tarojs/plugin-platform-h5" 加载失败
    taroError:插件依赖"@tarojs/plugin-platform-h5"加载失败,请检查插件配置报错如下,原因:node版本的问题,使用nvm切换node版本就可以了......
  • (三)python多进程multiprocessing模块的变量传递问题:父进程中的numpy.array对象隐式序列
    参考:https://docs.python.org/zh-cn/3/library/multiprocessing.htmlcloudpickle——Python分布式序列化的专用模块python多进程multiprocessing模块的变量传递问题:父进程中的numpy.array对象隐式序列化到子进程后的inplace操作的问题-Death_Knight-博客园(cnblogs.com)......
  • JS中的函数防抖
    一、什么是函数防抖概念:函数防抖(debounce),就是指触发事件后,在n秒内函数只能执行一次,如果触发事件后在n秒内又触发了事件,则会重新计算函数延执行时间。举个栗子,坐电梯的时候,如果电梯检测到有人进来(触发事件),就会多等待10秒,此时如果又有人进来(10秒之内重复触发事件),那么电梯就......
  • vue map 从一组对象中得到一个新的对象
    示例数据:letlist=[{id:1,name:"张三"},{id:2,name:"李四"}]1、使用map 取name属性得到一个string数组letarr= list.map(pro=>pro.name);2、使用map得到一个新的对象集合letarr=list.map(pro=>({lable:pro.name,value:pro.id})) ......
  • C#请求访问HTTP+JSON数据的解析
    一、前言最近工作客户需要一个HTTP的Mes需求,所以自己去学习了C#请求HTTP的方法以及JSON数据的解析方法,总结出了点经验,以便后续自己找起来方便一点,故在此写一篇文章。二、准备工作下面我用一个聚合数据提供的天气预报API接口来阐述请求HTTP和JSON数据解析的功能;先看API文档这么访......
  • yaml文件获取key的全路径
    importyamlwithopen('aa.yaml',"r")asfile:data=yaml.load(file,Loader=yaml.FullLoader)defyaml_flat(x):forkey,valueinx.items():ifisinstance(value,dict):fork,vinyaml_flat(value):......
  • vue pc使用htmlCanvas Jspdf 实现点击将页面生成图片并转成pdf下载
    <template><divid="main"ref="workbench"v-loading="loading"class="echartsPdf">需要的内容</div></template><script>importhtml2canvasfrom'html2canvas'importJspdf......
  • js new运算符
    1、new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。(通过构造函数来创建一个实例对象)2、new做了什么?   ①创建一个临时对象 ②为该临时对象添加属性 __proto__,将该属性链接至构造函数的原型对象(绑定原型)③将this指向该临时对象......