Как JavaScript делает сравнение? - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть массив объектов, который получает новые значения каждый раз, когда создается новый пользователь. Мне нужно выполнить поиск по имени человека, а затем выполнить некоторые операции с ним, и я реализовал бинарный поиск и в своем коде, который я нашел в Интернете, но есть что-то, что беспокоит меня поисковым кодом.

Объект выглядит следующим образом:

person = {
      name: name,
      password: password,
      cartItems: '',
      cartPrice: 0
}

затем я помещаю его в массив.

и двоичный код поиска выглядит следующим образом:

searchValues(users, value) {
    var startIndex = 0,
        stopIndex = users.length,
        middle = Math.floor((stopIndex + startIndex) / 2);

    while(users[middle].name != value && startIndex < stopIndex){
      //adjust search area
      if (value < users[middle].name) {
          stopIndex = middle - 1;
      } else if (value > users[middle].name) {
          startIndex = middle + 1;
      }
      //recalculate middle
      middle = Math.floor((stopIndex + startIndex) / 2);
    }

    return (users[middle].name != value) ? -1 : middle;
}

Мои вопросы: как JavaScript выполняет сравнение между строковыми значениями, конвертирует ли он в ascii? Я могу понять код, если он был применен к числам, но я немного запутался, когда дело доходит до строк.

Заранее благодарю всех, кто хочет помочь

РЕДАКТИРОВАТЬ: я забыл упомянуть, что я отсортировал массив перед рукой.

1 Ответ

1 голос
/ 22 апреля 2019

Алгоритм сравнения двух строк прост:

  1. Сравните первый символ обеих строк.
  2. Если первый символ из первой строки больше (или меньше) чемдругая строка, то первая строка больше (или меньше), чем вторая.Мы закончили.
  3. В противном случае, если первые символы обеих строк совпадают, сравните вторые символы одинаково.
  4. Повторяйте до конца любой строки.
  5. Если обе строки заканчиваются на одинаковую длину, то они равны.В противном случае длинная строка больше.ссылка подробнее здесь
...