blog
blog copied to clipboard
实现parse取值函数
let obj = {
a: 1,
b: { c: 2 },
d: [1, 2, 3, 4],
e: [{ f: [5, 6] }]
}
let r1 = parse(obj, 'a')
let r2 = parse(obj, 'b.c')
let r3 = parse(obj, 'd[2]')
let r4 = parse(obj, 'e[0].f[0]')
实现方案1new Function
function parse(obj, str) {
let fn = new Function('obj', 'return obj.' + str)
return fn(obj)
}
实现方案2split
function parse(obj, str) {
str = str.replace(/\[(\d+)\]/g, '.$1')
let arr = str.split('.')
arr.forEach(item => {
obj = obj[item]
})
return obj
}