获取对象里面任意属性值
程序员文章站
2024-03-17 12:21:10
...
获取对象里面任意属性值
上代码直接使用:
/**
* 获取对象属性值
* @param {object} object 取值对象
* @param {string} attributeChain 属性名链路
* @param {*} defaultValue 默认值
* @return {*} 最终取值
*/
const get = (object, attributeChain, defaultValue = null) => {
if (!object || typeof object !== 'object') {
return null;
}
const result = attributeChain
.replace(/\[/g, '.')
.replace(/\]/g, '')
.split('.')
.filter(item => item)
.reduce((acc, val) => {
if (acc && Object.keys(acc).indexOf(val) > -1) {
acc = acc[val];
return acc;
} else {
return null;
}
}, object);
return result === undefined || result === null ? defaultValue : result;
};
// 举例
const obj = {
name: 'xiaoming',
age: 18,
hobby:{
book: ['React', 'Vue入门到精通'],
movie:{
movie1:'古惑仔之只手遮天',
}
}
};
const getMove1 = get(obj, 'hobby.movie.movie1', ''); // '古惑仔之只手遮天'