现在我有这样的代码:
var object = {
a: 'a',
b: 'b',
c: {
d: 'd'
}
}
_.get(object).pick(['a', 'b']).value();
如何深入选择属性“ d”:
_.get(object).pick(['a', 'b', 'c.d']).value();
答案 0 :(得分:3)
您可以在没有破折号的情况下进行深度破坏:
var object = {
a: 'a',
b: 'b',
c: {
d: 'd'
}
}
const { a, b, c :{ d }} = object;
console.log(a,b,d);
const obj = {a, b, d};
console.log(obj);
答案 1 :(得分:1)
如果您坚持使用Lodash,请考虑使用_.get()函数:
_.get(object, 'c.d');
因此,对于要获取的属性:
const selectedProps = {
..._.pick(object, ['a', 'b']),
_.get(object, 'c.d')
}
答案 2 :(得分:0)
您可以创建一个flatPick()
函数。该函数迭代路径数组。并使用_.get()
获取path
的值,并使用_.set()
将路径的最后一部分作为属性添加到结果对象上:
function flatPick(object, paths) {
const o = {};
paths.forEach(path => _.set(
o,
_.last(path.split('.')),
_.get(object, path)
));
return o;
}
var object = {
a: 'a',
b: 'b',
c: {
d: 'd',
e: {
f: 'f'
}
}
};
var result = flatPick(object, ['a', 'b', 'c.d', 'c.e.f']);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>