js 怎样可在一个数组中最快速度找到距离指定索引最近的index
时间: 2024-02-12 22:05:15 浏览: 123
geokdbush:JavaScript中最快的地理位置空间索引
如果要在一个数组中最快速度找到距离指定索引最近的index,可以使用双指针算法。该算法需要两个指针,一个指向起始索引,另一个指向结束索引,然后根据条件移动指针,直到找到最近的index。
具体实现如下:
```javascript
function findClosestIndex(arr, startIndex, target) {
let left = startIndex;
let right = startIndex;
let closestIndex = -1;
while (left >= 0 || right < arr.length) {
if (left >= 0 && arr[left] === target) {
closestIndex = left;
break;
}
if (right < arr.length && arr[right] === target) {
closestIndex = right;
break;
}
left--;
right++;
}
return closestIndex;
}
```
该函数接受三个参数:数组、起始索引和目标值。函数使用双指针算法从起始索引开始查找距离指定索引最近的index,如果找到了目标值,则返回该值的索引,否则返回-1。
使用该函数的示例代码如下:
```javascript
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(findClosestIndex(arr, 3, 5)); // 输出 4
console.log(findClosestIndex(arr, 5, 5)); // 输出 5
console.log(findClosestIndex(arr, 7, 5)); // 输出 -1
```
在上面的示例中,我们从索引3开始查找数组中距离最近的值为5的索引,结果为4;从索引5开始查找数组中距离最近的值为5的索引,结果为5;从索引7开始查找数组中距离最近的值为5的索引,结果为-1,因为索引7之后没有值为5的元素。
阅读全文