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

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

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'))

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理