如何使用递归遍历对象获得value值

一般要用到递归,就要判断对象是否和父类型是否一样

这里演示简单的对象递归,还有数组递归类似。

var obj = { a:{w:1,y:2,x:3},
            b:{s:4,j:5,x:6},
             c:{car:7,cat:8,mao:9}
}
function f(s){
  for(var i in s){
   if(typeof s[i]=="object"){
      f(s[i])
   }else{
   console.log(s[i]);
  }
  }
}
f(obj);

返回结果:1,2,3,4,5,6,7,8,9

时间: 2024-12-09 11:43:20

如何使用递归遍历对象获得value值的相关文章

递归遍历对象获取value值

let menu = { name: '一级菜单', data: { name: '二级菜单', data: { name: '三级菜单', data: { name: '四级菜单' } } } }; function f(s){ for(var i in s){ if(typeof s[i]=="object"){ f(s[i]) }else{ console.log(s[i]); } } } f(menu); 原文地址:https://www.cnblogs.com/Smiled/

数据拦截器:递归遍历对象/数组,回调提供对属性,值的修改接口

/** * 数据拦截器: * * 对复杂类型数据做深度递归,提供修改拦截属性,回调中可对属性,值等做处理 * * @param {*} data object/array 需要拦截的目标(数组或对象) * @param {*} callback1 function 回调函数 在内部对最内层(value为基础类型,再无嵌套)的value做一些事情,回调参数为一个obj * @param {*} callback2 function 同上,区别在于value为复杂类型,有嵌套 * 回调参数说明: *

c#用反射原理递归遍历复杂实体对象

之前在网上看到的都是遍历那种比较简单的实体对象,但是如果有实体嵌套,甚至是包含有List<XXInfo>这种属性的时候就没有办法处理了.通过递归遍历的方式可以完成对复杂实体对象的所有属性的遍历,可以取值和赋值. 下面是关键部分的代码,有什么不对的地方路过的大大一定要指点哈. using System.Reflection; public System.Text.StringBuilder strB = new System.Text.StringBuilder();     public vo

JavaScript 深度遍历对象的两种方式,递归与非递归

递归遍历: 基本问题: 当前属性值不为对象时,打印键和值 递归过程:当前属性值为对象时,打印键,继续递归 var o = { a: { b: { c: { d: { e: { f: 1, g:{ h:2 } } } } } } }; function printObjRec(obj) { for (var prop in obj) { if (typeof (obj[prop]) === "object") { console.log(prop); getProp(obj[prop])

递归遍历XML节点属性和属性值

public static XmlDocument FileMergedIntoXML(string strXmlPathPublic) { string strXmlPathPublic = string.Format(@"{0}file1.xml", AppDomain.CurrentDomain.BaseDirectory); XmlDocument docPublic = new XmlDocument(); XmlReaderSettings settings = new X

中根递归遍历二叉树,并输出权值大于50的节点

/** * @author 黄志伟 */ public class Search{ public static void main(String[] args){ Node A = new Node(); A.setValue(51); Node B = new Node(); B.setValue(52); Node C = new Node(); C.setValue(53); Node D = new Node(); D.setValue(49); Node E = new Node();

递归判断多维数组中对象是否有值

一个项目需求中,需要判断数组中的对象是否有值,先看下数据结构: let list = [ { value: "1", children: [ { value: "2", }, { value: "3", children: [ { value: "4", }, ] } ] }, { value: "5", } ] 那么如何进行判断多层子集是否有值呢?这里就会用到递归来实现 function ruleVali

数据结构二叉树的递归与非递归遍历之 实现可编译(1)java

前一段时间,学习数据结构的各种算法,概念不难理解,只是被C++的指针给弄的犯糊涂,于是用java,web,javascript,分别去实现数据结构的各种算法. 二叉树的遍历,本分享只是以二叉树中的先序遍历为例进行说明,中序遍历和后序遍历,以此类推! 二叉树递归与非递归遍历的区别,虽然递归遍历,跟容易读懂,代码量少,运算快,但是却容易出现溢出的问题,所以所以非递归遍历,在处理千万级的运算量时会先的很有用处. 二叉树的先序遍历:先访问根节点,再访问先后访问左右节点.如图: 二叉树的递归遍历之java

递归遍历

递归遍历: 查找指定父节点下所有子代节点 如何: 2步:    1. 先遍历所有直接子节点   2. 在遍历直接子节点时,对每个子节点调用和父节点完全相同的方法. 算法: 深度优先遍历: 每次都优先遍历子节点 所有子节点遍历完,才返回遍历兄弟节点 递归的效率: 极低. 解决: 绝大多数递归都可用循环代替 遍历API: 每次仅遍历下一个节点,可用循环反复执行(了解) 1. 节点迭代器: 如何: 2步: 1. 创建迭代器对象: var iterator=document.createNodeIter