Сортировка массива из Firebase не удалась - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь получить массив пользователей, отсортированный по количеству лайков. Я получаю пользователя из базы данных 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));

Но это работает как задумано ...

Есть идеи как сделать сортировку?

Я не получаю никакой ошибки или чего-либо еще.

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