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

如何修正getOpenedBoxes函数,正确筛选已开启的盒子?

问题修正方案

现有代码的问题点:

  • map参数误用:map的回调函数第一个参数是当前遍历的整个盒子对象,不是单独的open/price/opened属性。你现在的写法相当于把盒子对象赋值给open,把数组索引赋值给price,把原数组赋值给opened,构造出来的新对象里opened是原数组,永远不等于false,所以filter会保留所有元素。
  • filter条件写反:需求是筛选opened: true的盒子,但代码里判断的是boxes.opened === false。
  • 多余的map操作:不需要重新构造对象,直接对原数组过滤即可。

修正后的代码:

function getOpenedBoxes(data) {
  return data.boxes.filter(box => box.opened === true);
}

验证测试:

  • 初始数据调用后,会返回仅包含box_A的数组,长度为1,符合预期。
  • 将data.boxes[2].opened改为true后,返回包含box_A和box_C的数组,长度为2,符合预期。

如果需要返回原对象的副本(避免后续修改影响原数据),可以在filter后加map浅拷贝:

function getOpenedBoxes(data) {
  return data.boxes
    .filter(box => box.opened === true)
    .map(box => ({ ...box }));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:21:37