Как написать функцию, которая возвращает наименьший индекс, для array[index] == index используя бинарный поиск js

Как написать функцию, которая возвращает наименьший индекс, для array[index] == index используя бинарный поиск? В ходе написания функции возникла проблема с тем, что функция возвращает не наименьшее совпадение индекс - значение, а первое найденное, например в середине.

function equals(a) {
  let sortArr = a.slice();
  sortArr.sort((a, b) => a - b);

  let left = -1;
  let right = sortArr.length

  while (right - left > 1) {
    const mid = Math.floor((left + right) / 2)

    if (sortArr[mid] === a.indexOf(sortArr[mid])) {
      return sortArr[mid]
    }
    if (sortArr[mid] > a.indexOf(sortArr[mid])) {
      right = mid
    } else {
      left = mid
    }
  }

  return -1;
}

console.log(equals([-5, 1, 2, 3, 4, 5, 7, 10, 15]))


Ответы (0 шт):