Я пытаюсь получить массив пользователей, отсортированный по количеству лайков. Я получаю пользователя из базы данных Firebase на случай, если что-то изменится.
Пример пользователя:
{
"likes": [
{
"createDate": {
"date": 22,
"day": 3,
"hours": 10,
"minutes": 33,
"month": 7,
"seconds": 25,
"time": 1534934005660,
"timezoneOffset": 0,
"year": 118
},
"creatorID": "1OA4U39rsPPXZblWG6nLHObB7gz1",
"firebaseKey": "-LKWBYQFbaO1Fs8_Rllc",
"workID": "-LK6-jxPZ0tCNW6c-GTI",
"id": "0"
},
{
"createDate": {
"date": 22,
"day": 3,
"hours": 13,
"minutes": 45,
"month": 7,
"seconds": 50,
"time": 1534938350990,
"timezoneOffset": -120,
"year": 118
},
"creatorID": "8Z7dd5L01FW0EbV0Wvu1KaXfmOx1",
"firebaseKey": "-LKWS7ZsUu2Khn0j7vLk",
"workID": "-LK5xZaui7IIcJcT22Rp",
"id": "1"
}
],
}
Я пытался использовать такой метод sort
, но безуспешно.
var solversByLikes = solvers.sort((a, b) => a.likes.length - b.likes.length);
К тому времени я тестирую консоль, регистрируя массив solversByLikes
. Это результат:
0 LikesComponent.js:46
0 LikesComponent.js:46
0 LikesComponent.js:46
0 LikesComponent.js:46
2 LikesComponent.js:46
2 LikesComponent.js:46
Но если я переключу a и b, чтобы сортировка изменилась, ничего не изменится.
var solversByLikes = solvers.sort((a, b) => b.likes.length - a.likes.length);
Я попытался воспроизвести проблему следующим образом:
allUsers = [{likes: [1, 2, 3, 4, 5, 6, 7, 8]}, {likes: [1, 2,]}, {likes: [1, 2, 3, 4, 5, 6,]}, {likes: [1, 2, 3, 4, 5,]}, {likes: [1, 2, 3, 4,]}, {likes: [1, 2, 3]}]
solversByLikes = allUsers.sort((a, b) => b.likes.length - a.likes.length);
solversByLikes.forEach(user => console.log(user.likes.length));
Но это работает как задумано ...
Есть идеи как сделать сортировку?
Я не получаю никакой ошибки или чего-либо еще.