乐趣区

关于算法:实现深层对象属性访问

输出 对象 以及 属性名 ,取得 属性值

eg: 输出:data, 'a/b/c'

const data = {
    a: {
        b: {
            c:1,
            d:2
        }
    }
}

输入:1

办法 1:while遍历

function findObjectValue(object, attribute) {let arr = attribute.split('/')
    let i = 0
    while (arr[i]) {object = object[arr[i]]
        i++
    }
    return object
}

const data = {
    a: {
        b: {
            c:1,
            d:2
        }
    }
}
console.log(findObjectValue(data, 'a/b/c'))

办法 2:eval拼贴字符串
拼出来就是这样的,temp['a']['b']['c']

const findObjectValue = (data, attr) => {
  let temp = data;
  return eval(`temp['${attr.split('/').join(`']['`)}']`);
}

const data = {
    a: {
        b: {
            c:1,
            d:2
        }
    }
}
console.log(findObjectValue(data, 'a/b/c'))
退出移动版