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

JS获取对象数组所有键的并集 寻求ES6+更高性能实现方案

你当前的实现每次迭代都会重新实例化Set、多次展开数组,会反复遍历已收集的唯一键,数据量较大时存在大量不必要的性能开销。

方案1:简洁高性能写法(ES2019+ 兼容)

使用flatMap直接拍平所有对象的键数组,仅做一次Set去重,全程仅遍历所有键一次,无重复的中间实例创建开销:

const uniqueKeys = [...new Set(all.flatMap(Object.keys))];

该实现与你原有代码的输出结果完全一致,性能是原实现的数倍,数据量越大提升幅度越明显。

方案2:极致性能优化写法

如果处理的对象数组规模极大,可以直接遍历所有键插入Set,完全避免中间数组的生成和展开操作,达到理论最优时间复杂度:

const keySet = new Set();
for (const obj of all) {
  for (const key of Object.keys(obj)) {
    keySet.add(key);
  }
}
const uniqueKeys = [...keySet];

扩展提示

如果需要同时收集Symbol类型的键、不可枚举的自有键,可以将Object.keys替换为Reflect.ownKeys。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:06:02