这句JS代码是什么意思?

这句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

回到顶部