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

JS技术问题:不修改warehouse的aiStaff数组实现机器人注册

实现registerRobot函数(不修改原aiStaff数组)

对象结构定义

robot {
  id
  skill
  currentWorkPlace
}

warehouse {
  aiStaff
  currentStatus
  boxes
}

需求说明

编写registerRobot函数,需完成两个功能:

  • 将新机器人的id加入仓库的aiStaff数组
  • 将warehouse对象的引用赋值给机器人的currentWorkPlace属性
    约束条件:不能修改warehouse内部aiStaff的原数组,且不能创建新变量。

原代码问题

当前代码直接替换了aiStaff数组,而非基于原数组创建新数组添加元素:

function registerRobot(robot, warehouse) {
  robot.currentWorkPlace = warehouse;
  robot.currentWorkPlace.aiStaff = [robot.id];
}

正确实现方案

可以利用数组的扩展运算符(...)或concat方法,基于原数组创建新数组并添加新机器人id,同时不创建额外变量:

方案1:使用扩展运算符

function registerRobot(robot, warehouse) {
  robot.currentWorkPlace = warehouse;
  robot.currentWorkPlace.aiStaff = [...warehouse.aiStaff, robot.id];
}

方案2:使用concat方法

function registerRobot(robot, warehouse) {
  robot.currentWorkPlace = warehouse;
  robot.currentWorkPlace.aiStaff = warehouse.aiStaff.concat(robot.id);
}

原理说明

  • 扩展运算符...warehouse.aiStaff会把原数组的所有元素展开,再拼接新的robot.id,生成一个全新的数组,原aiStaff数组的内容不会被修改。
  • concat方法同样会返回一个包含原数组元素和新元素的新数组,不会改变原数组。
  • 两种方式都没有创建额外变量,直接在赋值语句中完成新数组的生成与赋值。

内容的提问来源于stack exchange,提问作者m.strilec

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:15:16