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

如何检查二维数组中各子数组的首元素与尾元素是否相等

问题分析
  • 变量名不匹配:声明的数组变量名为array,遍历时调用的是arr,运行时会抛出ReferenceError: arr is not defined错误
  • forEach方法返回值无效:forEach本身没有返回值,且在forEach回调中执行return只会跳出当前次回调,既无法终止整个遍历流程,也不能将判断结果返回到外层作用域
  • 逻辑不符合需求:需求是验证所有子数组都满足首尾元素相等,现有逻辑只要遇到一个满足条件的子数组就返回true,完全不匹配需求;且现有代码只判断el[0] === el[1],默认子数组长度为2,若子数组长度大于2,无法正确取到末尾元素,应该用el[el.length - 1]获取子数组的最后一个元素
  • 缺少边界兼容:没有适配子数组为空的场景,若子数组长度为0,取el[0]和el[el.length-1]都会得到undefined,可根据业务需要调整判断规则
正确实现

如果需求是判断所有子数组的首尾元素都相等,直接使用Array.prototype.every方法即可,该方法会遍历所有元素,只有所有元素都满足判断条件时才会返回true:

const array = [[1, 2], [3, 3]];
const allSubArrMatch = array.every(el => {
  // 这里默认空数组视为不满足条件,可根据实际业务调整规则
  if (el.length === 0) return false;
  return el[0] === el[el.length - 1];
});
console.log(allSubArrMatch); // 输出 false,因为第一个子数组[1,2]首尾元素不相等

如果需求是筛选出所有首尾元素相等的子数组,使用Array.prototype.filter方法:

const array = [[1, 2], [3, 3], [2, 5, 2]];
const matchedSubArr = array.filter(el => {
  if (el.length === 0) return false;
  return el[0] === el[el.length - 1];
});
console.log(matchedSubArr); // 输出 [[3, 3], [2, 5, 2]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:24:00