javascript无原生属性挑选/排除api,但可用解构+剩余操作符、object.keys+reduce、object.fromentries+object.entries等方法实现;lodash的_.pick()和_.omit()提供开箱即用方案。

JavaScript 中没有原生的“属性挑选”或“属性排除” API,但可以通过 Object.keys、Object.entries、解构赋值、扩展运算符等组合方式,简洁高效地实现对象的属性筛选与剔除。
用解构 + 剩余属性实现属性排除
这是最常用、最直观的方式:先解构出要保留的字段,再用剩余操作符(...)收集其余属性;反过来,也可先解构要剔除的字段,再用剩余操作符保留其余部分。
- 排除指定属性(如剔除
id和createdAt):
console.log(rest); // 只含其余属性
- 注意:剩余属性必须是最后一个解构项,且只能出现在对象解构中;不能用于嵌套深层排除(需配合递归或工具函数)。
用 Object.keys + reduce 实现灵活挑选
适合动态指定键名列表,尤其在配置化场景(如 API 返回过滤、表单提交裁剪)中非常实用。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 只保留指定 key 的属性:
Object.keys(obj)
.filter(key => keys.includes(key))
.reduce((acc, key) => ({ ...acc, [key]: obj[key] }), {});
pick({ name: 'Alice', age: 30, email: 'a@b.c' }, ['name', 'email']);
// → { name: 'Alice', email: 'a@b.c' }
- 可封装为工具函数,支持数组或字符串形式的 keys(如
pick(obj, 'name email'))。 - 性能上,小对象无压力;大数据量时建议改用
for...in或Map提升效率。
用 Object.fromEntries + Object.entries 实现条件排除
适合基于值或键的逻辑判断来过滤属性,比如剔除所有空值、undefined 或函数类型的字段。
- 排除值为
null、undefined或空字符串的属性:
Object.fromEntries(
Object.entries(obj).filter(([, v]) => v != null && v !== '')
);
- 排除函数属性(常用于序列化前清理):
Object.fromEntries(
Object.entries(obj).filter(([, v]) => typeof v !== 'function')
);
借助第三方库(如 Lodash)快速开箱即用
若项目已引入 Lodash,可直接使用 _.pick() 和 _.omit(),语义清晰、兼容性好、边界处理完善。
-
_.pick(user, ['name', 'email'])→ 挑选指定属性 -
_.omit(user, ['password', 'token'])→ 排除指定属性 - Lodash 还支持路径语法(如
_.pick(obj, 'profile.name')),适合嵌套对象筛选。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










