Вид JavaScript с функцией, не работающей над iPhone

  • Делают Ваш код максимально читаемым, особенно при помощи имен функций и имен переменной, которые максимально очевидны. Если это означает, что некоторые имена находятся немного на длинной стороне, то пусть будет так.

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

  • Во время разработки, помогите включить диагностический вывод - но помочь выключить их для производства.

6
задан 4 September 2009 в 15:53
поделиться

3 ответа

Ваша функция сравнения не работает: он должен возвращать числовое значение, которое должно быть отрицательным, если 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 и, следовательно, означает, что значения следует рассматривать как равные . Это вообще не должно работать, но если это так,

9
ответ дан 10 December 2019 в 02:50
поделиться

Функция сортировки должна возвращать -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;
  }
});
0
ответ дан 10 December 2019 в 02:50
поделиться

Вы должны явно вернуть -1, 0 или 1, как я полагаю, в соответствии с определением этой функции. Моя плохая.

                    devices.sort(function(a, b) {
                    if (a.name < b.name) return -1;
                    if (a.name > b.name) return 1;
                    return 0;
                });

Сейчас работает.

0
ответ дан 10 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: