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

如何检查嵌套数组中是否存在与目标数组完全相同的子数组

判断嵌套数组中是否存在匹配的子数组

要实现扫描嵌套数组,判断其中是否存在与目标数组元素完全一致的子数组并返回布尔值,这里提供两种实用的实现方式:

方法一:逐元素对比(通用可靠)

通过Array.some()遍历嵌套数组的每个子数组,结合Array.every()逐个对比元素,是最稳妥的方案,能处理绝大多数场景:

// 待扫描的数组
const array = [
  [0, 1, 2],
  [3, 4, 5], 
  [6, 7, 8],
];

// 目标数组
const newArray = [0, 1, 2];

const hasMatchingSubarray = array.some(subArr => {
  // 长度不一致直接排除
  if (subArr.length !== newArray.length) return false;
  // 逐位置对比元素
  return subArr.every((item, index) => item === newArray[index]);
});

console.log(hasMatchingSubarray); // 输出: true

说明

  • some()会在找到第一个匹配的子数组后立即停止遍历,性能高效
  • 先检查子数组长度,避免不必要的元素对比
  • every()确保子数组每个位置的元素都和目标数组完全相等

方法二:JSON序列化对比(简洁场景化)

如果你的数组元素都是可JSON序列化的类型(如数字、字符串、普通对象),可以用JSON字符串对比的方式,写法更简洁:

// 待扫描的数组
const array = [
  [0, 1, 2],
  [3, 4, 5], 
  [6, 7, 8],
];

// 目标数组
const newArray = [0, 1, 2];

const targetStr = JSON.stringify(newArray);
const hasMatchingSubarray = array.some(subArr => JSON.stringify(subArr) === targetStr);

console.log(hasMatchingSubarray); // 输出: true

注意事项

  • 若数组包含不可序列化元素(如函数、Symbol、循环引用对象),此方法会失效
  • 严格依赖元素顺序,顺序不同的数组会被判定为不匹配(符合需求中"元素完全一致"的要求)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:55:17