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

JavaScript如何检查数组中嵌套的子数组是否全部相同?

解决数组类型usecase的一致性判断问题

原代码失效的核心原因是:数组是引用类型,直接用===比较两个数组时,只会检查它们是否指向内存中的同一个对象,而不是比较数组内容是否一致。哪怕两个数组元素完全相同,只要是不同的数组实例,===都会返回false。

修改后的完整代码

var arrSession = [
  {
    type: '1',
    usecase: [ '1' ]
  },
  {
    type: '1',
    usecase: [ '1' ]
  }
];

// 辅助函数:比较两个数组内容是否一致
function arraysEqual(a, b) {
  // 先判断长度是否相同,长度不同直接返回false
  if (a.length !== b.length) return false;
  // 逐个比较数组元素
  return a.every((val, index) => val === b[index]);
}

function isSame(obj, index, arr) {
    if (index === 0) {
        return true;
    } else {
        const prevObj = arr[index - 1];
        return (
            obj.type === prevObj.type &&
            arraysEqual(obj.usecase, prevObj.usecase)
        );
    }
}

var checkUsecase = arrSession.every(isSame);

console.log('checkUsecase:');
console.log(checkUsecase); // 输出true

补充说明

如果usecase数组中包含对象、嵌套数组等复杂类型,需要把arraysEqual改成递归比较的版本。但如果只是字符串、数字这类基本类型,上面的写法就足够满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:14:58