zoukankan      html  css  js  c++  java
  • javascript JS递归遍历对象 使用for(variable in object)或者叫for/in和forEach方式

    1.递归遍历查找特定key值(ie9以下不支持forEach)

    原文http://www.cnblogs.com/ae6623/p/5938560.html

    var obj = {
         first: "1",
         second: {
             name: "abc",
             mykey: "2",
             third: {
                 age: "30",
                 mykey: "3"
             }
         },
         forth: "4",
         mykey: "5"
     };
    
     console.log(getMykey(obj, []));
    
     function getMykey(obj, mykeyValues) {
         //没有则跳出
         if (!obj["mykey"]) {
             return mykeyValues;
         } else {
             //有就放入
             mykeyValues.push(obj["mykey"]);
             //再次递归
             var keys = Object.keys(obj);
             keys.forEach(function(i) {
                 getMykey(obj[i], mykeyValues);
             });
         }
         return mykeyValues;
     }

    2.递归遍历输出key

    参考http://www.jb51.net/article/86607.htm

    要求输出嵌套json对象的key name 

    LG: var tree = {node1:{node2:"",node3:{node4:""}}}
    
    Print: ["node1","node2","node3","node4"]

    答案:

    var arr=[];
    function printTree(tree){
    for(var i in tree){
    arr.push(i);
    typeof tree[i]=='object'?printTree(tree[i]):'';
    };
    }(tree);
    console.log(arr);

    var obj ={first:"1",second:{name:"abc",mykey:"2",third:{age:"30",mykey:"3"}},forth:"4",mykey:"5"};console.log(getMykey(obj, []));functiongetMykey(obj, mykeyValues) {//没有则跳出if (!obj["mykey"]) {return mykeyValues;}else{//有就放入mykeyValues.push(obj["mykey"]);//再次递归var keys =Object.keys(obj);keys.forEach(function(i) {getMykey(obj[i], mykeyValues);});}return mykeyValues;}

     

  • 相关阅读:
    解决"Windows没有足够信息,不能验证该证书"问题
    IPA 安装
    基于ECharts图表实现的股票K线图表(matols.com)
    WPF Chart
    IdentityServer4 中文文档
    企业信息系统
    手机网站的几点注意
    查询 SQL_Server 所有表的记录数: for xml path
    iframe在ipad safari的显示
    从WEB SERVICE 上返回大数据量的DATASET
  • 原文地址:https://www.cnblogs.com/eastegg/p/6439225.html
Copyright © 2011-2022 走看看