zoukankan      html  css  js  c++  java
  • 函数实现 a?.b?.c?.d

    function isHas(obj, key, str) {
    const keyArr = obj.split('.');
      let i = 0;
      const is = (isObj, isKey) =>
         isObj ? is(isObj[isKey], keyArr[++i]) : str;
      const res = is(obj, keyArr[i]);
      is = null;keyArr = null;i = null;obj = null;key = null;str = null;
      return res;
    }

    var myObj = { a: 0 }

    isHas(myObj, 'a.b.s') // undefined

    isHas(myObj, 'a') // 0

    /** 获取对象内指定属性的值 */
    export function getObjVal(obj: Object, key: string, index: number = 0) {
        const tkey = key.replace(/[|(].)/g, '.');
        const keyArr = tkey.split('.');
        const nIndex = index + 1;
        if (keyArr.length < nIndex + 1) {
            return obj;
        }
        if (!obj) {
            return undefined;
        }

        return getObjVal(obj[keyArr[nIndex]], key, nIndex);
    }
     

    var myObj1 = { a: 0, b: { ba: { baa: ['text'] } } };

    getObjVal(myObj1, 'myObj1.b.ba.baa[0]') // text

    getObjVal(myObj1, 'b.ba.baa[0]', 1) // text

    getObjVal(myObj1, 'myObj1.a') // 0

    getObjVal(myObj1, 'myObj1.a.a') // undefined

  • 相关阅读:
    2019.8.6原型链与继承
    2019.8.2闭包,作用域
    2019.8.1正则二
    2019.7.31正则
    2019.7.29二维数组
    2019.7.28关于数组和循环的八道题
    2019.7.27数组api
    DOM
    JavaScript数组5种去重方法
    JavaScript面向对象
  • 原文地址:https://www.cnblogs.com/qiang-ling/p/11223855.html
Copyright © 2011-2022 走看看