//obj为引用,map的每个数组元素运行,每次都往深的改变引用类型obj的值,太大神了啊,怎么会想到如此简单的方法!!佩服!
function parse(obj, str) {
str.replace('[', '.').replace(']', '').split('.').map((ele) => obj = obj[ele.trim()]);
return obj || 'undefined';
}
var object = {
b: { c: 4 }, d: [{ e: 5 }, { e: 6 }]
};
console.log( parse(object, 'b.c') == 4 ) //true
console.log( parse(object, 'd[0].e') == 5 ) //true
console.log( parse(object, 'd.0.e') == 5 ) //true
console.log( parse(object, 'd[1].e') == 6 ) //true
console.log( parse(object, 'd.1.e') == 6 ) //true
console.log( parse(object, 'f') == 'undefined' ) //true