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

JavaScript中如何在农场类构造函数中处理动物数组参数?

农场类的动物数组处理方案

确保构造函数中animals始终为数组

要保证无论调用构造函数时是否传入animals参数,或者传入的参数类型是否正确,this.animals最终都是数组。可以通过设置默认值+类型校验来实现:

容错处理版本(兼容非数组输入)

class Farm {
  constructor(id, location, animals = []) {
    this.id = id;
    this.location = location;
    // 若传入的不是数组,则替换为空数组
    this.animals = Array.isArray(animals) ? animals : [];
  }
}

严格校验版本(强制数组输入)

如果希望调用者必须传入数组类型的animals,可以抛出错误提示:

class Farm {
  constructor(id, location, animals = []) {
    this.id = id;
    this.location = location;
    if (!Array.isArray(animals)) {
      throw new Error('animals 参数必须是数组类型');
    }
    this.animals = animals;
  }
}

增强动物管理能力(可选)

为了更方便操作农场里的动物,可以给类添加常用的管理方法,比如添加动物、更新数量、删除动物等:

class Farm {
  constructor(id, location, animals = []) {
    this.id = id;
    this.location = location;
    this.animals = Array.isArray(animals) ? animals : [];
  }

  // 添加动物:已存在则增加数量,不存在则新增
  addAnimal(name, quantity) {
    const targetAnimal = this.animals.find(animal => animal.name === name);
    if (targetAnimal) {
      targetAnimal.quantity += quantity;
    } else {
      this.animals.push({ name, quantity });
    }
  }

  // 更新指定动物的数量
  updateAnimalQuantity(name, newQuantity) {
    const targetAnimal = this.animals.find(animal => animal.name === name);
    if (targetAnimal) {
      targetAnimal.quantity = newQuantity;
    }
  }

  // 删除指定动物
  removeAnimal(name) {
    this.animals = this.animals.filter(animal => animal.name !== name);
  }
}

使用示例

// 创建农场实例
const sunnyFarm = new Farm(1, '澳大利亚维多利亚州', [{ name: '奶牛', quantity: 12 }, { name: '绵羊', quantity: 30 }]);

// 添加50只鸡
sunnyFarm.addAnimal('鸡', 50);

// 将奶牛数量更新为18
sunnyFarm.updateAnimalQuantity('奶牛', 18);

// 删除绵羊
sunnyFarm.removeAnimal('绵羊');

console.log(sunnyFarm.animals);
// 输出: [{ name: '奶牛', quantity: 18 }, { name: '鸡', quantity: 50 }]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:10:16