sort () в ES6 неправильно сортирует элементы, когда в массиве слишком много объектов - PullRequest
0 голосов
/ 03 июня 2018

Это образец массива с 8 объектами внутри.Теперь я хочу отсортировать их в порядке возрастания.И я прекрасно получаю результат в консоли.

const array = 
            [{"lead_location":"a"},{"lead_location":"rta"},
             {"lead_location":"van"},{"lead_location":"svan"},
             {"lead_location":"avan"},{"lead_location":"yvan"}, 
             {"lead_location":"ab"},{"lead_location":"rta"}];

var sort = array.sort((a, b) => (a.lead_location) > (b.lead_location));
console.log(sort); // this array is sorted perfectly

Однако, если я добавлю больше объектов в массив (13 в следующем примере), массив будет плохо отсортирован.Я использую тот же метод сортировки, что и выше.Второй массив показан ниже:

const array = 
            [{"lead_location":"a"},{"lead_location":"rta"},
             {"lead_location":"van"},{"lead_location":"svan"}, 
             {"lead_location":"avan"},{"lead_location":"yvan"}, 
             {"lead_location":"a"},{"lead_location":"rta"},
             {"lead_location":"van"},{"lead_location":"svan"}, 
             {"lead_location":"avan"},{"lead_location":"ab"}, 
             {"lead_location":"rta"}];

    var sort = array.sort((a, b) => (a.lead_location) > (b.lead_location));
    console.log(sort); // this array is not sorted well

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

1 Ответ

0 голосов
/ 03 июня 2018
let sort = array.sort((a,b) => {
    if(a.lead_location > b.lead_location) return 1;
    if(a.lead_location < b.lead_location) return -1;
    return 0
})

Вы не можете вернуть true / false для результата.Вы должны указать порядок.Это должно быть в порядке возрастания.Если нет, поменяйте местами -1 и 1. 0 означает, что оба равны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...