js 递归查找数组从指定索引开始上下同时,最近符合条件的index
时间: 2023-12-12 17:03:03 浏览: 57
可以使用递归函数来查找从指定索引开始,上下同时查找最近符合条件的index。以下是一个示例函数:
```javascript
function findIndexUpDown(arr, startIndex, target) {
// 递归终止条件
if (startIndex < 0 || startIndex >= arr.length) {
return -1;
}
if (arr[startIndex] === target) {
return startIndex;
}
// 向下查找
const downIndex = findIndexUpDown(arr, startIndex + 1, target);
// 向上查找
const upIndex = findIndexUpDown(arr, startIndex - 1, target);
// 返回最近的索引
if (downIndex === -1 && upIndex === -1) {
return -1;
} else if (downIndex === -1) {
return upIndex;
} else if (upIndex === -1) {
return downIndex;
} else {
return Math.abs(startIndex - upIndex) < Math.abs(downIndex - startIndex) ? upIndex : downIndex;
}
}
```
该函数接受三个参数:数组、起始索引和目标值。函数通过递归从指定索引开始上下同时查找最近符合条件的index,如果找到了目标值,则返回该值的索引,否则返回-1。
使用该函数的示例代码如下:
```javascript
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(findIndexUpDown(arr, 3, 5)); // 输出 4
console.log(findIndexUpDown(arr, 5, 5)); // 输出 5
console.log(findIndexUpDown(arr, 7, 5)); // 输出 -1
```
在上面的示例中,我们从索引3开始上下同时查找数组中最近的值为5的索引,结果为4;从索引5开始上下同时查找数组中最近的值为5的索引,结果为5;从索引7开始上下同时查找数组中最近的值为5的索引,结果为-1,因为索引7之后没有值为5的元素。
阅读全文