首页 > 解决方案 > 如何同时索引javascript对象上的多个属性

问题描述

假设我有一个 JavaScript 对象,例如:

var x = {
  'one': 1,
  'two': 2,
  'three': 3
}

然后我有一个数组,其中包含我想从此对象访问的键。

这是我的钥匙:

var keys = ['one', 'two'];

现在,当我使用这些键从对象中取出我想要的东西时,它应该看起来像这样......

{
  'one': 1,
  'two': 2
}

我的伪代码头脑想象代码看起来像这样:

var x = {
  'one': 1,
  'two': 2,
  'three': 3
}
var keys = ['one', 'two'];
var answer = x[keys];

但我知道这实际上不起作用......

在javascript中有一种优雅的方法吗?使用数组来索引对象的多个属性?

我可以想象一个for-loop使用蛮力的版本,但我想知道这是否是我不知道的 JavaScript 功能?

想法?

标签: javascriptarraysobjectecmascript-6syntax

解决方案


您可以像这样使用Array#reduce来获得最高性能的O(n)时间复杂度。

var x = { 'one': 1, 'two': 2, 'three': 3};
var keys = ['one', 'two', 'five'];

const result = keys.reduce((acc, curr) => (curr in x && (acc[curr] = x[curr]), acc), {});
console.log(result);


推荐阅读