zoukankan      html  css  js  c++  java
  • JS(递归-记一次面试题)-写一个get函数,get({a:1}, 'a')输出1,get({a : {b:2}},‘a.b’)输出2,按照此规律写一个函数

    一、思路

           使用递归将多层对象转换为一层对象

    二、具体实现

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script type="text/javascript">
            
    var obj = {
        x: 1,
        y: {
            a: 2,
            b: {
                c: 3,
                d: 4
            }
        }
    };
     
     //str='[{"a.b":1,"a.b.c":2}]'
     
    //console.log(JSON.parse(str));
    //获取对象所有的key值
    function getKeys(obj, path) {
        //es6新语法  Object.prototype.toString()方法精准判断参数值属于哪种类型
        if(Object.prototype.toString.call(obj) === "[object Object]") {
         
            var arrKeyValue = {};//保存里面的key=value
            
            //()()制造一个新的作用域
            (function getKeysFn(o, char) {
                for(var key in o) {
                    // debugger
                    //判断对象的属性是否需要拼接".",如果是第一层对象属性不拼接,否则拼接"."
                    var newChar = char == "" ? key : char + "." + key;
                  
                    if(Object.prototype.toString.call(o[key]) === "[object Object]") {
                        //如果属性对应的属性值仍为可分解的对象,使用递归函数继续分解,直到最里层
                        getKeysFn(o[key],newChar);
                    } else {
                    
                  
                        
                        arrKeyValue[newChar] = o[key]
    
                    }
                }
            })(obj,"");
            
        } else {
            console.log("传入的不是一个真正的对象哦!");
        }
    
    
        return arrKeyValue[path]
     
    }
    console.log(getKeys(obj,'y.a'));
    
        </script>
    </body>
    </html>
  • 相关阅读:
    Django——Model
    正则表达式
    day03数据类型
    创建一个 Django 项目
    JAVA获取MYSQL数据库表、字段、字段类型、字段注释
    Django
    取splist的某个字段的值
    如何获取列表项的创建者的邮件地址
    使用 HTML 表单 Web 部件筛选并显示另一 Web 部件中的数据
    vs2010+Aspx进行sharepoint2010工作流开发(1)
  • 原文地址:https://www.cnblogs.com/xxm980617/p/11685980.html
Copyright © 2011-2022 走看看