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

如何修改从数组中移除元素的属性?Medusa类实现咨询

解决方案:移除雕像时重置Person的stoned属性

嘿,这个问题很好解决!你只需要利用shift()方法的返回特性就行——它在移除数组第一个元素的同时,会返回被移除的那个元素,我们刚好可以抓住这个返回值,把对应的person对象的stoned属性设为false。

实现思路

  • 当this.statues的长度超过3时,先调用shift()并把返回的对象存到一个变量里
  • 直接修改这个变量的stoned属性为false,因为我们拿到的是原对象的引用,修改它会直接改变原对象的状态

修改后的完整代码

class Medusa { 
  constructor(name) { 
    this.name = name; 
    this.statues = []; 
  } 

  stare(person) { 
    person.stoned = true; 
    this.statues.push(person); 
    if(this.statues.length > 3) { 
      // 捕获被移除的person对象,重置其stoned属性
      const freedPerson = this.statues.shift();
      freedPerson.stoned = false;
    } 
  } 
}; 

class Person { 
  constructor(name) { 
    this.name = name; 
    this.stoned = false; 
  } 
};

这样修改后,每当美杜莎的雕像数量超过3时,最早被石化的人会被解除石化(stoned设为false),同时从雕像数组中移除,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:12:31