javascript - 如何同时索引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 功能?
想法?
解决方案
您可以像这样使用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);
推荐阅读
- java - JHipster 中外部 API 的访问控制策略
- java - 如何检测用户是否拖动 PIP 窗口(向下拖动以关闭)?
- android - 我如何使所有应用程序从右到左接收一个部分?以及使这部分没有显示在 rtl 语言上的问题是什么?
- python - 一列 0 到 100 的 DataFrame
- java - 如何从 Flux (Spring Reactor) 中的项目生成项目
- ios - 应用程序仅在通过 Xcode 运行时运行,当我尝试在与 Mac 断开连接的设备上运行它时它不起作用
- excel - 获取上次更改/导入 Excel 中的模块的日期
- nfs - 是否可以在 PCFDev 中启用 NFS 服务?
- javascript - 为什么引导模式的“关闭”和“x”按钮不起作用?
- django - Django REST Framework 自定义序列化程序 mixin 不起作用