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

JS数组匹配函数存在null时返回结果不符合预期问题咨询

代码错误点

  • 循环边界错误:数组下标范围是0 ~ 数组长度-1,你写的i <= p.length、j <= q.length会取到超出数组范围的undefined值,触发错误判断
  • 空值判断逻辑错误:if(p[i] || q[j] == null)的逻辑完全不符合需求,首先运算符优先级导致该语句实际判断逻辑是「p[i]为真 或者 q[j]等于null」,和你要求的「只要存在null就返回false」完全相反,而且没有判断p[i]为null的情况
  • 循环逻辑完全错误:不需要嵌套两层循环,数组匹配应该按相同下标逐位对比,你写的嵌套循环会直接在第一次对比i=0、j=0的元素后就直接返回结果,根本不会遍历后续元素
  • 缺少长度判断:两个数组长度不同的情况下本身就不相等,你没有提前做长度校验

修正后代码

var isSameTree = function(p, q) {
    // 长度不等直接返回false
    if (p.length !== q.length) return false
    for(let i = 0; i < p.length; i++) {
        // 任意位置出现null直接返回false
        if (p[i] === null || q[i] === null) return false
        // 同位置元素不等直接返回false
        if (p[i] !== q[i]) return false
    }
    // 全部校验通过返回true
    return true
};

验证结果

输入[1,2,3]、[1,2,3]返回true,输入[1,null,2]、[1,2]返回false,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:21:00