You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改JavaScript函数实现按数组匹配对象键生成新对象?

从对象中提取指定键对应的键值对组成新对象

给定一个JavaScript对象和包含键名的数组,我们需要返回一个仅包含数组中存在的键的新对象。原代码逻辑是根据值匹配键,这里我们修改为根据键匹配提取键值对。

方法一:遍历数组构建结果对象

var obj = {"active": 12,"inactive": 14,"neutral": 16}
var arr1=['active','inactive']

function getFilteredObj(obj, arr) {
  const result = {};
  arr.forEach(key => {
    // 检查原对象是否包含当前键,避免继承属性干扰
    if (obj.hasOwnProperty(key)) {
      result[key] = obj[key];
    }
  });
  return result;
}

console.log(getFilteredObj(obj, arr1));
// 输出: {"active": 12,"inactive": 14}

这个方法逻辑直观:初始化空对象存储结果,遍历数组中的每个键名,若原对象包含该键(用hasOwnProperty确保是对象自身属性),就将对应的键值对复制到结果对象中。

方法二:ES6+简洁写法

var obj = {"active": 12,"inactive": 14,"neutral": 16}
var arr1=['active','inactive']

function getFilteredObj(obj, arr) {
  return Object.fromEntries(
    Object.entries(obj).filter(([key]) => arr.includes(key))
  );
}

console.log(getFilteredObj(obj, arr1));
// 输出: {"active": 12,"inactive": 14}

这个写法利用ES6特性简化逻辑:

  1. Object.entries(obj) 将原对象转换为键值对数组(如[["active",12], ["inactive",14], ["neutral",16]])
  2. filter(([key]) => arr.includes(key)) 筛选出数组中包含的键对应的键值对
  3. Object.fromEntries() 将筛选后的键值对数组转回对象

内容的提问来源于stack exchange,提问作者marjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:15:44