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

如何在JavaScript中过滤对象数组,仅保留所有对象值相同的属性?

提取数组中所有对象共有的相同键值对

给定包含多个对象的数组,我们需要筛选出所有对象里属性值完全一致的键值对,返回对应的结果对象。以下是具体实现方案:

实现代码

const myArr = [
  { name: "john", id: 1, age:10 },
  { name: "john", id: 2, age:10 },
  { name: "mary", id: 3, age:10 }
];

function getSharedProperties(arr) {
  // 处理空数组边界情况
  if (!arr.length) return {};
  
  // 以数组第一个对象为基准
  const base = arr[0];
  const result = {};

  // 遍历基准对象的所有属性键
  for (const key of Object.keys(base)) {
    // 校验所有对象的该属性值是否与基准值一致
    const isShared = arr.every(item => item[key] === base[key]);
    if (isShared) {
      result[key] = base[key];
    }
  }

  return result;
}

// 测试调用
console.log(getSharedProperties(myArr)); // 输出: { age: 10 }

代码说明

  • 先处理空数组的特殊情况,直接返回空对象
  • 取数组第一个对象作为基准,减少不必要的键遍历次数
  • 用Object.keys()获取基准对象的所有属性名
  • 通过Array.every()批量校验每个属性在所有对象中的值是否统一
  • 收集所有符合条件的键值对到结果对象中

该实现同样适配数组中对象属性数量不一致的场景——只要某个属性在所有对象中存在且值相同,就会被保留到结果里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:13:12