查找json指定位置的值的算法实现
给定如下json和指定的位置,求最终的值
const json = {
a: { b: { c: 1} },
d: { e: 2 },
}
const path = ['a', 'b', 'c'];
1 ) 普通算法
let result = json;
path.forEach(k => {
result = result[k];
})
console.log(result) // 最终结果
- 这一种是使用了链表的指针,树形结构本身的属性就是一种链表结构
2 ) 使用eval的算法
const result = eval(path.join('.'));
console.log(result); // 最终结果
- 这种是原始的方式,eval在以前使用比较广泛,本质还是基于原型链(链表)来访问动态属性
- eval在严格模式下是被禁止的,所以不推荐使用
3 ) 使用Function的算法
const fn = new Function(`return ${path.join('.')}`);
const result = fn();
console.log(result); // 最终结果
- 使用Function代替eval来讲字符串转变成一个可执行的函数,来高效安全的执行动态代码
- 本质上也是对原型链(链表)的直接应用
2万+



被折叠的 条评论
为什么被折叠?



