function getValue(obj,str,defaultValue) { let strArr = str.split('.'); let Rep = /(\w+)\[(\d+)\]/; for(let i = 0; i < strArr.length; i++) { if(Rep.test(strArr[i])) { let index = strArr[i].match(Rep)[2],target = strArr[i].match(Rep)[1]; obj = obj[target][parseInt(index)]; continue; } if(obj.hasOwnProperty(strArr[i])) { obj = obj[strArr[i]]; } else { return defaultValue; } } return obj; } 按照楼主的思路写了一下 可以支持数组