如何从另一个对象获取对象,仅使用所需的键?

时间:2018-05-02 07:35:25

标签: javascript object ecmascript-6 destructuring

我在JS中有一个关于Destructuring的奇怪问题。如何从另一个对象获取对象,仅使用所需的键。 例如,要转换此对象:

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 :(得分:4)

您可以使用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);

答案 1 :(得分:0)

您可以使用所需的密钥创建数组,并使用该数组上的reduce()firstObj获取值。

<强>样本

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;}