Теперь у меня есть такой код:
var object = { a: 'a', b: 'b', c: { d: 'd' } } _.get(object).pick(['a', 'b']).value();
Как глубоко выбрать свойство 'd', например:
_.get(object).pick(['a', 'b', 'c.d']).value();
Если вы настаиваете на использовании Lodash, рассмотрите возможность использования функции _. Get () :
_.get(object, 'c.d');
Итак, для свойств, которые вы хотите получить:
const selectedProps = { ..._.pick(object, ['a', 'b']), _.get(object, 'c.d') }
Вы можете создать функцию flatPick().Функция повторяет массив путей.и использует _.get() для получения значения path и _.set() для добавления последней части пути в качестве свойства к результирующему объекту:
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>
Вы можете глубоко деструктировать без lodash:
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);