Как я могу получить объект от другого объекта, только с необходимыми ключами? - PullRequest
0 голосов
/ 02 мая 2018

У меня один странный вопрос о разрушении в JS. Как я могу получить объект от другого объекта, только с необходимыми ключами. Например, чтобы преобразовать этот объект:

let firstObj = {
    a: 1,
    b: 2,
    c: 3,
    d: 4
};

К этому:

let secondObj = {
    a: 1,
    d: 4
};

У меня есть массив с объектами первого типа. По некоторым причинам я должен использовать минимальный код для этого. Мой минимальный код:

arrayObj = [firstObj, firstObj, firstObj, firstObj, firstObj];
let secondArr = arrayObj.map(
  ({a, d}) => ({a, d})
);

Как я могу улучшить это?

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Вы можете создать массив с необходимыми ключами и использовать reduce() в этом массиве, чтобы получить значения из firstObj.

DEMO

const neededKeys = ['a', 'd'],
      firstObj = {a: 1,b: 2,c: 3,d: 4};

let result = neededKeys.reduce((r, v) => Object.assign(r,{[v]:firstObj[v]}), {});

console.log(result);
.as-console-wrapper {max-height: 100% !important;top: 0;}
0 голосов
/ 02 мая 2018

Вы можете использовать IIFE для получения требуемых свойств и возврата нового объекта.

var first = { a: 1, b: 2, c: 3, d: 4 },
    second = (({ a, d }) => ({ a, d }))(first);

console.log(second);

С массивом ключей для динамического подхода

var first = { a: 1, b: 2, c: 3, d: 4 },
    keys = ['a', 'd']
    second = Object.assign(...keys.map(k => ({ [k]: first[k] })));

console.log(second);
...