数据结构与算法之链表: 使用链表指针获取JSON节点值的算法实现 (Typescript版)

查找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来讲字符串转变成一个可执行的函数,来高效安全的执行动态代码
  • 本质上也是对原型链(链表)的直接应用

你可能感兴趣的:(Typescript,Data,Structure,and,Algorithms,算法,链表)