Сортировка массива из Firebase не выполняется

Я пытаюсь получить массив пользователей { «нравится» : [ { «createDate» : { «date» : 22 , «day» : 3 , «hours» : 10 , «minutes» : 33 , «month» : 7 , «секунды» : 25 , «время» : 1534934005660 , «timezoneOffset» : 0 , «год» : 118 }, «creatorID» : «1OA4U39rsPPXZblWG6nLHObB7gz1» , "firebaseKey" : "-LKWBYQFbaO1Fs8_Rllc" , "workID" : "-LK6-jxPZ0tCNW6c-GTI" , "Идентификатор" : "0" }, { "createDate" : { "Дата" : 22 , "день" : 3 , " часов» : 13 , "минуты" : 45 , "месяц" : 7 , "секунды" : 50 , "время" : 1534938350990 , "timezoneOffset" : - 120 , "год" : 118 }, "creatorID" : "8Z7dd5L01FW0EbV0Wvu1KaXfmOx1" , «firebaseKey» : «-LKWS7ZsUu2Khn0j7vLk» , «workID» : «-LK5xZaui7IIcJcT22Rp» , «id» : «1» } ], } ed по количеству их понравившихся. Я получаю пользователя из базы данных Firebase, если это меняет ситуацию.

Пример пользователя:

sort

Я пытался использовать такой 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));

Но это работает по назначению ...

Любая идея, как это сделать?

У меня ничего не получается.

javascript,arrays,firebase,sorting,firebase-database,

1

Ответов: 0

Сортировка массива из Firebase не выполняется

Я пытаюсь получить массив пользователей { «нравится» : [ { «createDate» : { «date» : 22 , «day» : 3 , «hours» : 10 , «minutes» : 33 , «month» : 7 , «секунды» : 25 , «время» : 1534934005660 , «timezoneOffset» : 0 , «год» : 118 }, «creatorID» : «1OA4U39rsPPXZblWG6nLHObB7gz1» , «firebaseKey» : «-LKWBYQFbaO1Fs8_Rllc» , «workID» : «- LK6-jxPZ0tCNW6c-GTI " , " id " : " 0 " }, { " createDate " : { " date " : 22 , " day " : 3 , " hours " : 13 , " minutes " : 45 , " month " : 7 , "секунды" : 50 , "время" : 1534938350990 , "timezoneOffset" : - 120 , "год" : 118 }, "creatorID" : "8Z7dd5L01FW0EbV0Wvu1KaXfmOx1" , "firebaseKey" : "-LKWS7ZsUu2Khn0j7vLk" , "workID" : " -LK5xZaui7IIcJcT22Rp " , " id " : " 1 " } ], } ed по количеству понравившихся им. Я получаю пользователя из базы данных Firebase, если это меняет ситуацию.

Пример пользователя:

sort

Я пытался использовать такой 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));

Но это работает по назначению ...

Любая идея, как это сделать?

У меня ничего не получается.

01JavaScript, массивы, firebase, сортировка, firebase-базы данных,
Похожие вопросы