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



我有一个关于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})
);

我怎样才能改进这个?

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

您可以使用所需的键创建一个数组,并在该数组上使用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;}

最新更新