Я пытаюсь получить массив пользователей { «нравится» : [ { «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,
Я пытаюсь получить массив пользователей { «нравится» : [ { «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-базы данных,