Делают Ваш код максимально читаемым, особенно при помощи имен функций и имен переменной, которые максимально очевидны. Если это означает, что некоторые имена находятся немного на длинной стороне, то пусть будет так.
Использование статический анализатор как можно больше. Вы скоро вырабатываете привычку написания кода, которое соответствует его правилам.
Во время разработки, помогите включить диагностический вывод - но помочь выключить их для производства.
Ваша функция сравнения не работает: он должен возвращать числовое значение, которое должно быть отрицательным, если a , нулевым, если
a = b
и положительным, если a> b
, т. е.
function(a, b) {
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
}
Ваша функция возвращает false
if a.name
0
и, следовательно, означает, что значения следует рассматривать как равные . Это вообще не должно работать, но если это так,
Функция сортировки должна возвращать -1, 0 или 1.
devices.sort(function(a, b) {
if (a.name < b.name) {
return -1;
} else if (a.name == b.name) {
return 0; // ambiguous
} else {
return 1;
}
});
Вы должны явно вернуть -1, 0 или 1, как я полагаю, в соответствии с определением этой функции. Моя плохая.
devices.sort(function(a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
Сейчас работает.