const pluckDeep = key => obj => key.split('.').reduce((accum, key) => accum[key], obj)
const pluckDeep = key => obj => key.split('.').reduce((accum, key) => accum[key], obj)
var pluckDeep = function pluckDeep(key) {
return function (obj) {
return key.split('.').reduce(function (accum, key) {
return accum[key];
}, obj);
};
};
看上去就是根据字符串来取深层对象。
类似于 lodash 的 _.get
方法,但是没处理空指针问题。
比如有一个对象:
let obj = { a: { b: { c: 'HelloWorld' } } }
取值的时候可以:
let val = pluckDeep('a.b.c')(obj); // HelloWorld
10 回答11.4k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
就是取嵌套属性值:
说实话写得极其糟糕,这样的代码短但并不简洁,并且没处理空值。
好的代码,应该易读、易用,并且健壮。
如果实现这样一个接口,暴露给外部应该是直接接收2个参数:obj和keyString。而不是像现在接收一个参数,返回一个函数,再接收一个参数,再返回结果,反直观思维。