js 动态获取对象多级属性

醉菜鸟 2022-06-23 08:00:01

第一种:

/**
 * @param options
 * @param key
 * @returns {*}
 * @private
 */
function __value(options, key){
    const keys = key.split('.')
    let current = options
    for (let i = 0; i < keys.length; i++) {
        current = current[keys[i]]
    }
    return current;
}

const options = {
    a:{
        b:{
            c: 'd'
        }
    }
}

console.log(__value(options, 'a.b.c'))

第二种:

/**
 *
 * @param options
 * @param key
 * @returns {*}
 * @private
 */
function __value(options, key) {
    return key.split('.').reduce((o, i) => {
        if (o) return o[i]
    }, options)
}

const options = {
    a:{
        b:{
            c: 'd'
        }
    }
}
console.log(__value(options, 'a.b.c'))
意见反馈