Почему сортировка ведет себя иначе в Chrome? - PullRequest
0 голосов
/ 05 октября 2018

Я хотел отсортировать массив таким образом, чтобы один тип элемента всегда был первым.Кроме этого, приказ не имеет значения.Я написал следующее и продолжил свой день.

["a","b","a","b"].sort((x,y) => x === "b" ? 0 : 1);

Chrome дает мне ожидаемый результат;

["b","b","a","a"]

Но IE и Safari - нет.

IЯ понимаю, как получить желаемый результат. Думаю, проблема в том, как браузер сравнивает элементы, но мне интересно более подробное объяснение.

1 Ответ

0 голосов
/ 05 октября 2018

ваш вопрос получен в здесь : вкратце

, ваша функция сравнения неверна, она должна возвращать 1,-1, 0 в качестве возвращаемых значений, например:

array.sort(function(a, b) {
    if (a.id < b.id) return -1;
    if (a.id > b.id) return 1;
    return 0;
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...