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

使用isEqual判断二维数组行元素全相等时结果异常的问题

问题分析与修复

你的代码存在几个关键问题,导致所有行都被错误判定为元素全相等:

1. 判断函数逻辑错误

isEqual函数里用了赋值操作currentValue = 5,而非比较操作currentValue === 5。更核心的问题是,这个函数的逻辑偏离需求——你要判断的是一行内所有元素相等,而非所有元素固定等于5。正确逻辑应该是让每个元素和该行第一个元素对比。

2. 变量赋值与声明错误

  • const r = 0是常量,无法重新赋值,应改为let r = 0;
  • r == i + 1是比较运算符,不是赋值操作,要写成r = i + 1。

3. 输出语句位置错误

你把console.info放在循环最外层,不管result是否为true都会执行,导致所有行都输出提示。应该把输出放在if(result == true)的代码块内。

4. 循环变量未声明

循环中的i没有用let声明,会变成全局变量,不符合代码规范。


修正后的代码

const isEqual = (currentValue, _, arr) => currentValue === arr[0];
let r = 0;

const array = [
  [1,2,3,4],
  [5,5,5,5],
  [6,7,8,9],
  [10,11,12,13]
];

for (let i = 0; i < array.length; i++) {
  const result = array[i].every(isEqual);
  if (result) {
    r = i + 1;
    console.info(`Row ${r} has all equal values.`);
  }
}

代码解释

  • isEqual函数利用every方法的第三个参数arr(当前遍历的数组),让每个元素和数组第一个元素对比,实现“所有元素相等”的判断;
  • 用let声明r和i,保证变量作用域正确;
  • 把输出语句移到if条件内,仅当行内元素全相等时才输出;
  • 使用模板字符串${r}让代码更简洁。

运行修正后的代码,会输出预期结果:

Row 2 has all equal values.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:25:06