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

JS数组布尔值取反报错求助:含undefined元素时代码异常

问题修复:处理含undefined的二维数组布尔值取反

错误原因

你的代码报错是因为内层循环的条件判断顺序搞反了。当grid[i]是undefined的时候,你先去访问grid[i].length,这会直接触发Cannot read properties of undefined (reading 'length')的错误——毕竟undefined根本没有length这个属性。

修复后的代码

调整条件判断顺序,先检查当前元素是否为undefined,再处理子数组;同时可以简化undefined元素的处理逻辑(本来就不需要修改,直接跳过即可):

function flipGrid(grid) {
  for (let i = 0; i < grid.length; i++) {
    // 先判断当前项是否是undefined,是的话直接跳过内层循环
    if (grid[i] === undefined) {
      continue;
    }
    for (let k = 0; k < grid[i].length; k++) {
      const item = grid[i][k];
      if (item === true) {
        grid[i][k] = false;
      } else if (item === false) {
        grid[i][k] = true;
      }
      // undefined和其他元素保持原样,无需额外处理
    }
  }
  return grid;
}

let grid = [
  [true, false, undefined, true],
  [undefined, false, true, true],
  undefined, 
  [undefined, undefined, false, false]
];
console.log(JSON.stringify(flipGrid(grid)));

运行结果

执行后输出:

[[false,true,undefined,false],[undefined,true,false,false],undefined,[undefined,undefined,true,true]]

和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:55:25