在对象中查找对象

编程入门 行业动态 更新时间:2024-10-18 02:26:09
本文介绍了在对象中查找对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我目前正在尝试访问一个对象及其属性,但我似乎无法找到一种方法来获取不是其各自子数组中第一个项目的对象.只有当它们在数组中的第一个时它才能找到数字,但我认为我在我的函数中做错了事情,我不太确定如何修复它.我的错误可能是什么,我该如何解决?

这是树:

{名称:一个",id:{编号:1,等级:0},孩子们: [{name: "两个",id:{编号:2,1级},孩子们: [{名称:三",id:{编号:3,等级:2},孩子们: [{name: 五",id:{编号:5,等级:3},孩子们: [{name: 《八》,id:{编号:8,等级:4},孩子们: []},{name: "九",id:{编号:9,等级:4},孩子们: []},{name: 十",id:{编号:10,等级:4},孩子们: []}]}]},{name: 四",id:{编号:4,等级:2},孩子们: [{名称:六",id:{编号:6,等级:3},孩子们: []},{name: 《七》,id:{编号:7,等级:3},孩子们: []}]}]}]}

这是我的功能:

findObj(obj, id) {如果(obj.ids.id == id){返回对象;}否则如果(obj.children.length != 0){for(var i in obj.children) {var temp = findObj(obj.children[i], id);如果(温度!= 未定义){返回温度;}}}}

解决方案

您可以使用带有单个 forEach 循环的递归方法来做到这一点.

const data = {"name":"One","ids":{"id":1,"level":0},"children":[{"name":"Two","ids":{"id":2,"level":1},"children":[{"name":"Three","ids":{"id":3,"level":2},"children":[{"name":"Five","ids":{"id":5,"level":3},"children":[{"name":"Eight","ids":{"id":8,"level":4},"children":[]},{"name":"Nine","ids":{"id":9,"level":4},"children":[]},{"name":"Ten","ids":{"id":10,"level":4},"children":[]}]}]},{"name":"四","ids":{"id":4,"level":2},"children":[{"name":"六","ids":{"id":6,"level":3},"children":[]},{"name":"Seven","ids":{"id":7,"level":3},"儿童":[]}]}]}]}函数 findObj(obj, id) {让结果=空;如果(obj.ids.id === id)结果= obj;如果(obj.children){obj.children.forEach(c => {if (!result) result = findObj(c, id)})}返回结果;}控制台日志(findObj(数据,6))控制台日志(findObj(数据,5))console.log(findObj(data, 1))

I am currently trying to access an object and its properties but I can't seem to find a way to get objects that are not the first items in their respective children array. It can find numbers only if they're first in the array, but I think that I did the wrong thing in my function, and I am not quite sure how to fix it. What could be my mistakes and how do I fix this?

Here is the tree:

{ name: "One", ids: { id: 1, level: 0 }, children: [ { name: "Two", ids: { id: 2, level: 1 }, children: [ { name: "Three", ids: { id: 3, level: 2 }, children: [ { name: "Five", ids: { id: 5, level: 3 }, children: [ { name: "Eight", ids: { id: 8, level: 4 }, children: [] }, { name: "Nine", ids: { id: 9, level: 4 }, children: [] }, { name: "Ten", ids: { id: 10, level: 4 }, children: [] } ] } ] }, { name: "Four", ids: { id: 4, level: 2 }, children: [ { name: "Six", ids: { id: 6, level: 3 }, children: [] }, { name: "Seven", ids: { id: 7, level: 3 }, children: [] } ] } ] } ] }

And here is my function:

findObj(obj, id) { if(obj.ids.id == id) { return obj; } else if(obj.children.length != 0) { for(var i in obj.children) { var temp = findObj(obj.children[i], id); if(temp != undefined) { return temp; } } } }

解决方案

You can do this using recursive approach with a single forEach loop.

const data = {"name":"One","ids":{"id":1,"level":0},"children":[{"name":"Two","ids":{"id":2,"level":1},"children":[{"name":"Three","ids":{"id":3,"level":2},"children":[{"name":"Five","ids":{"id":5,"level":3},"children":[{"name":"Eight","ids":{"id":8,"level":4},"children":[]},{"name":"Nine","ids":{"id":9,"level":4},"children":[]},{"name":"Ten","ids":{"id":10,"level":4},"children":[]}]}]},{"name":"Four","ids":{"id":4,"level":2},"children":[{"name":"Six","ids":{"id":6,"level":3},"children":[]},{"name":"Seven","ids":{"id":7,"level":3},"children":[]}]}]}]} function findObj(obj, id) { let result = null; if (obj.ids.id === id) result = obj; if (obj.children) { obj.children.forEach(c => { if (!result) result = findObj(c, id) }) } return result; } console.log(findObj(data, 6)) console.log(findObj(data, 5)) console.log(findObj(data, 1))

更多推荐

在对象中查找对象

本文发布于:2023-11-07 05:59:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1565722.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:在对   象中   对象

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!