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
相关产品推荐
相关产品推荐

