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

JavaScript中如何从对象中省略指定属性并生成新对象?

在JavaScript中省略对象指定属性的实现方法

嘿,这个需求在JS里有好几种实用的实现方式,我给你整理了几个常用的,涵盖单行和多行写法,你可以根据场景选择:

1. 解构赋值 + 剩余运算符(最简洁推荐)

这是现代JS里最常用的写法,不管单行还是多行都很清晰,而且不会修改原对象。

单行写法

const { b, ...newTest } = test;

多行写法(适合省略多个属性时更易读)

// 要省略多个属性的话,直接在解构里列出来就行
const { 
  b, // 要排除的属性b
  c, // 如果还要排除c,就加在这里
  ...newTest 
} = test;

原理:通过解构语法把不需要的属性单独提取出来,然后用剩余运算符...把剩下的所有属性打包成一个新对象newTest。

2. Object.fromEntries + 过滤(动态排除更灵活)

如果需要动态指定要排除的属性(比如从数组里读取要排除的键),这个方法会更方便。

单行写法

const newTest = Object.fromEntries(Object.entries(test).filter(([key]) => key !== 'b'));

多行写法(复杂过滤逻辑更清晰)

// 比如要排除多个属性,就用数组includes判断
const excludedKeys = ['b', 'c'];
const newTest = Object.fromEntries(
  Object.entries(test).filter(([key]) => {
    return !excludedKeys.includes(key);
  })
);

原理:先把原对象转成键值对数组(Object.entries(test)),然后过滤掉不需要的键值对,最后用Object.fromEntries把过滤后的数组转回对象。

3. 手动遍历(兼容旧环境)

如果你的代码需要兼容ES6之前的旧环境,或者需要更精细的属性控制,可以用传统的遍历写法:

const newTest = {};
for (const key in test) {
  // 确保只处理对象自身的可枚举属性,避免继承来的属性
  if (test.hasOwnProperty(key) && key !== 'b') {
    newTest[key] = test[key];
  }
}

注意:所有方法都会返回一个新对象,原对象test不会被修改,这符合函数式编程的 immutable 原则哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:56:18