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

如何从Audit对象中按指定字段列表提取目标字段?

高效过滤对象指定字段的解决方案

嘿,我懂你不想写一堆if判断或者绕弯路的心情,针对你从Audit对象中提取指定字段的需求,这里有两个简洁又高效的原生JavaScript方案,完全能解决你的问题:

准备工作:先定义你的原始数据

const audit = { 
  "sendDate": "11/11/2017", 
  "id": "1", 
  "user": "name1", 
  "role": "admin", 
  "auditType": "download", 
  "points": 3 
};
const desiredFields = ["sendDate", "id", "auditType"];

方案1:使用Array.reduce()(灵活且兼容性好)

这个方法可以帮你遍历目标字段列表,逐步构建出只包含需要字段的新对象,还能轻松添加字段存在性校验:

const filteredAudit = desiredFields.reduce((result, field) => {
  // 可选:确保原对象确实有这个字段,避免意外添加undefined属性
  if (audit.hasOwnProperty(field)) {
    result[field] = audit[field];
  }
  return result;
}, {});

// 输出结果:{ "sendDate": "11/11/2017", "id": "1", "auditType": "download" }

方案2:使用Object.fromEntries()(更简洁的ES2019+写法)

如果你项目环境支持ES2019及以上,这个写法会更清爽,一行就能搞定:

const filteredAudit = Object.fromEntries(
  desiredFields.map(field => [field, audit[field]])
);

如果担心有些字段可能不存在于原对象中,可以再加一层过滤:

const filteredAudit = Object.fromEntries(
  desiredFields
    .filter(field => audit.hasOwnProperty(field))
    .map(field => [field, audit[field]])
);

为什么这两个方案更好?

  • 时间复杂度都是O(n)(n是目标字段列表的长度),效率拉满;
  • 完全原生,不需要引入任何第三方库;
  • 代码简洁易读,维护成本低,比一堆if或者手动赋值优雅太多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:32:10