У меня есть массив объектов, который получает новые значения каждый раз, когда создается новый пользователь. Мне нужно выполнить поиск по имени человека, а затем выполнить некоторые операции с ним, и я реализовал бинарный поиск и в своем коде, который я нашел в Интернете, но есть что-то, что беспокоит меня поисковым кодом.
Объект выглядит следующим образом:
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? Я могу понять код, если он был применен к числам, но я немного запутался, когда дело доходит до строк.
Заранее благодарю всех, кто хочет помочь
РЕДАКТИРОВАТЬ: я забыл упомянуть, что я отсортировал массив перед рукой.