2020-07-03
描述
基于 keys
数组,返回嵌套在一个 JSON 对象中的目标值。
提示
- 将嵌套在 JSON 对象中你需要的
keys
做为一个数组进行比对 - 使用
Array.prototype.reduce()
从 JSON 嵌套对象中逐一获取对应的值 - 如果键存在于对象中,就返回目标值,否则的话就返回
null
代码
const deepGet = (obj, keys) => keys.reduce((xs, x) => (xs && xs[x] ? xs[x] : null), obj);
示例
获取指定键的值:
let index = 2;
const data = {
foo: {
foz: [1, 2, 3],
bar: {
baz: ['a', 'b', 'c']
}
}
};
deepGet(data, ['foo', 'foz', index]); // 3
deepGet(data, ['foo', 'bar', 'baz', 8, 'foz']); // null