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

JS查找数组中相邻或仅间隔空值的相同目标值下标对

实现查找符合要求的下标对的JavaScript函数

实现思路

  • 第一步遍历数组,收集所有值等于目标字母的下标,排除空槽和其他字符的位置
  • 第二步遍历收集到的下标组,逐对检查两个下标之间的所有元素是否仅为空值
  • 找到第一对符合规则的下标直接返回,无符合项返回空数组

代码实现

function findTargetPair(arr, targetChar) {
  // 收集所有目标字符的下标
  const targetPos = []
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === targetChar) targetPos.push(i)
  }
  // 校验相邻目标下标之间的内容
  for (let i = 0; i < targetPos.length - 1; i++) {
    const left = targetPos[i]
    const right = targetPos[i + 1]
    let hasInvalidChar = false
    // 检查两个下标中间的所有位置
    for (let j = left + 1; j < right; j++) {
      // 存在非空槽的字符则标记为无效
      if (arr[j] !== undefined) {
        hasInvalidChar = true
        break
      }
    }
    if (!hasInvalidChar) return [left, right]
  }
  return []
}

测试验证

// 测试用例
const myArray1 = ['A',,,,, 'A']
console.log(findTargetPair(myArray1, 'A')) // 输出 [0,5]

const myArray2 = ['A',,, 'E',, 'A']
console.log(findTargetPair(myArray2, 'A')) // 输出 []

const myArray3 = [,, 'A',, 'A', 'G']
console.log(findTargetPair(myArray3, 'A')) // 输出 [2,4]

const myArray4 = [,, 'A', 'A', 'G']
console.log(findTargetPair(myArray4, 'A')) // 输出 [2,3]

const myArray5 = [,, 'A', 'A', 'G', 'A']
console.log(findTargetPair(myArray5, 'A')) // 输出 [2,3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:45:04