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

如何判断嵌套数组子数组中是否存在指定顺序的连续元素对?

问题:生成不重复的连续元素对并添加到嵌套数组

我的嵌套数组示例:

[ [5, 10, 5, 15, 5, 10], [10, 15, 50, 350] ]

其中索引0的子数组为[5,10,5,15,5,10],索引1的子数组为[10,15,50,350]。

我需要实现:生成随机数对(x,y),添加到array[0]前,先判断array[0]中是否已存在x在前、y在后的连续元素对(比如数组里已有5紧跟15,就不能再添加5,15这个对),如果存在就重新生成随机数,直到找到不存在的对再添加。

原代码中array[0].includes(x,y)的用法错误,includes的第二个参数是查找起始索引,无法检测连续元素对,以下是正确实现方案:

实现步骤

  1. 编写辅助函数检测连续元素对
// 检查数组中是否存在指定的连续元素对
function hasConsecutivePair(arr, [first, second]) {
  // 遍历数组,只需要检查到倒数第二个元素
  for (let i = 0; i < arr.length - 1; i++) {
    if (arr[i] === first && arr[i + 1] === second) {
      return true;
    }
  }
  return false;
}
  1. 修改主逻辑,用do-while循环生成符合要求的随机数对
let array = [[], []];

// 示例随机数生成函数,可根据需求修改范围
function getRandomNum() {
  return Math.floor(Math.random() * 100) + 1;
}

// 生成10组符合要求的元素对
for (let i = 0; i < 10; i++) {
  let x, y;
  // 循环生成直到找到不存在的连续对
  do {
    x = getRandomNum();
    y = getRandomNum();
  } while (hasConsecutivePair(array[0], [x, y]));

  array[0].push(x, y);
}

说明

  • 辅助函数hasConsecutivePair遍历数组的前length-1个元素,逐个对比当前元素与下一个元素是否匹配目标元素对
  • 使用do-while循环确保先生成随机数对再进行检查,避免初始值干扰
  • 每次生成新的x,y后,调用辅助函数验证,只要存在重复的连续对就重新生成,直到符合条件再添加到数组中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:31:03