这句JS代码是什么意思?
const pluckDeep = key => obj => key.split('.').reduce((accum, key) => accum[key], obj)
回答
就是取嵌套属性值:
let data = { a: {
b: {
c: {
d: 1
}
}
}
}
pluckDeep('a.b.c.d')(data) //返回1
说实话写得极其糟糕,这样的代码短但并不简洁,并且没处理空值。
好的代码,应该易读、易用,并且健壮。
如果实现这样一个接口,暴露给外部应该是直接接收2个参数:obj和keyString。而不是像现在接收一个参数,返回一个函数,再接收一个参数,再返回结果,反直观思维。
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
以上是 这句JS代码是什么意思? 的全部内容, 来源链接: utcz.com/a/69749.html