You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

JavaScript中是否有快速移除并返回对象属性的方法?

单步实现对象属性提取并删除的方法

嘿,这个需求挺实用的!咱们可以通过给对象添加一个自定义的doSomething方法,把「提取属性值」和「删除原对象属性」这两步合并成一次调用,完美实现你想要的效果。

实现思路

给目标对象添加一个方法,这个方法接收属性名作为参数:

  1. 先获取该属性对应的值
  2. 从原对象中删除这个属性
  3. 返回获取到的属性值

这样调用一次方法就能同时完成两个操作,不用分开写赋值和删除代码。

代码示例

基础实现版本

const objectA = { a: 1, b: 2 };

// 给objectA添加自定义方法
objectA.doSomething = function(key) {
  // 先获取属性值
  const value = this[key];
  // 删除原对象的该属性
  delete this[key];
  // 返回属性值
  return value;
};

// 单步调用实现需求
const b = objectA.doSomething("b");
const objectB = { b };

console.log(objectA); // 输出: { a: 1 }
console.log(objectB); // 输出: { b: 2 }

ES6解构风格版本

如果你更喜欢ES6的解构语法,也可以这样写:

const objectA = { a: 1, b: 2 };

objectA.doSomething = function(key) {
  // 解构出目标属性和剩余属性
  const { [key]: value, ...remainingProps } = this;
  // 把剩余属性赋值回原对象
  Object.assign(this, remainingProps);
  return value;
};

// 调用效果和上面完全一致
const b = objectA.doSomething("b");
const objectB = { b };

补充说明

  • 因为对象是引用类型,方法里修改this(也就是objectA)会直接改变原对象,这正好符合你的需求。
  • 这个自定义方法可以复用,后续如果要提取其他属性,直接调用objectA.doSomething("属性名")就行。

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

火山引擎 最新活动