const obj = {
a: {
b: {
c: 1
}
}
}
使用字符串取值,比如说'a.b',要取到{ c: 1 }
可能是a,也可能是a.b,也可能是a.b.c,层级不确定
写一个函数,取到结果
function getValue(key) {}
调用,getValue('a.b')
const obj = {
a: {
b: {
c: 1
}
}
}
使用字符串取值,比如说'a.b',要取到{ c: 1 }
可能是a,也可能是a.b,也可能是a.b.c,层级不确定
写一个函数,取到结果
function getValue(key) {}
调用,getValue('a.b')
从健壮性上来说建议直接使用 Lodash 的 _.get()
方法:
https://www.lodashjs.com/docs...
https://github.com/lodash/lodash
即便是想自己实现,也可以参考人家的源码。
function getValue(obj, key) {
return key.split(".").reduce((prev, curr) => (prev = prev[curr]), obj);
}
13 回答12.8k 阅读
8 回答2.5k 阅读
2 回答5k 阅读✓ 已解决
7 回答1.9k 阅读
9 回答1.6k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
5 回答798 阅读
先把 key.split('.')变成数组然后遍历。
考虑健壮性可以用第三方库,比如 ramda 的
R.path(['a', 'b'], {a: {b: 2}});