Сортировка элементов разных массивов
Есть массив, в котором массивы.
Как их отсортировать, что бы после сортировки, они выводились по убыванию возраста? Сейчас такой вид var arr = [ ['26', 'firstname1', 'lastname1'], ['14', 'firstname2', 'lastname2'], ['22', 'firstname3', 'lastname3'], ['23', 'firstname4', 'lastname4'], ['20', 'firstname5', 'lastname5'] ] А как сделать такой? var arr = [ ['26', 'firstname1', 'lastname1'], ['23', 'firstname4', 'lastname4'], ['22', 'firstname3', 'lastname3'], ['20', 'firstname5', 'lastname5'], ['14', 'firstname2', 'lastname2'] ] |
DivMan,
(a,b) => b[0] - a[0] |
Надо отсортировать массивы, по убыванию возраста. Я их отсортировал, но почему они не отсортировались?
Входить надо, через контакт http://plnkr.co/edit/IbIIILTDthMoKtoO9Yhc?p=preview <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script src="http://vk.com/js/api/openapi.js"></script> <script> function foo() { VK.init({ apiId: 5580872 }); VK.Auth.login(function(response){ if(response.session){ VK.api('friends.get', {'user_id' : '26291131', 'fields' : 'bdate'}, response => { if(response.error){ alert(response.error.error_msg); } else{ let userData = response.response; var arrUser = [] var arrAge = []; var arrAge2 = []; var now = new Date(); var god = now.getFullYear() for(var h = 0; h < userData.length; h++){ arrUser.push(userData[h].first_name + ' ' + userData[h].last_name) if(typeof userData[h].bdate == 'string' && userData[h].bdate.split('.')[2]){ arrAge.push(userData[h].first_name + ' ' + userData[h].last_name + ' ' + (god - parseInt((userData[h].first_name + ' ' + userData[h].last_name + ' ' + userData[h].bdate.split('.')[2]).split(' ')[2]))) } } for(var c = 0; c < arrAge.length; c++){ arrAge2.push(arrAge[c].split(' ')) } //сортировка по возрасту arrAge2.sort(function(a,b){ return a[2] < b[2]; }); arrAge2.forEach(function(el){ console.log(el); }); } }); } else{ alert('Не удалось авторизироваться') } }, 2); } foo() </script> </body> </html> |
Вот пример на подобии, который тоже почему-то не работает
var arr = [ ['firstname1', 'lasname1', '26'], ['firstname2', 'lastname2', '14'], ['firstname3', 'lasme3', '22'], ['firstname3', 'laname3', '22'], ['firstname4', 'lasame4', '23'], ['firstname2', 'lastname2', '14'], ['firstname5', 'lastnme5', '20'] ]; console.log(arr.sort((a, b) => b[0] < a[0])) |
Цитата:
Цитата:
|
Исправил, всё равно не работает, и никто не может помочь
http://plnkr.co/edit/K8EdtgqrClE7PeZHLeCZ?p=preview |
Цитата:
|
Первые массивы нормально сортируются, а те, которые сами подгружаются, то они не сортируются
http://plnkr.co/edit/K8EdtgqrClE7PeZHLeCZ?p=preview <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script src="http://vk.com/js/api/openapi.js"></script> <script> function foo() { VK.init({ apiId: 5580872 }); VK.Auth.login(function(response){ if(response.session){ VK.api('friends.get', {'user_id' : '26291131', 'fields' : 'bdate'}, response => { if(response.error){ alert(response.error.error_msg); } else{ let userData = response.response; var arrUser = [] var arrAge = []; var arrAge2 = []; var now = new Date(); var god = now.getFullYear() for(var h = 0; h < userData.length; h++){ arrUser.push(userData[h].first_name + ' ' + userData[h].last_name) if(typeof userData[h].bdate == 'string' && userData[h].bdate.split('.')[2]){ arrAge.push(userData[h].first_name + ' ' + userData[h].last_name + ' ' + (god - parseInt((userData[h].first_name + ' ' + userData[h].last_name + ' ' + userData[h].bdate.split('.')[2]).split(' ')[2]))) } } for(var c = 0; c < arrAge.length; c++){ arrAge2.push(arrAge[c].split(' ')) } //сортировка по возрасту arrAge2.sort(function(a, b){ return a[2] < b[2] }) for(var i = 0; i < arrAge2.length; i++){ console.log(arrAge2[i]) } } }); } else{ alert('Не удалось авторизироваться') } }, 2); } foo() //точно такойже массив var arr = [ ['вапкр', 'птртвы', '26'], ['иавовы', 'татьправпа', '14'], ['пролрлбпвы', 'Ячсми', '22'], ['енгщз', 'выапрпр','22'], ['еншщшз', 'олдщне', '23'], ['ппппппп', 'истттттт', '14'], ['уууууу', 'ллллллл', '20'] ]; arr.sort(function(a, b){ return a[2] < b[2] }) for(var i = 0; i < arr.length; i++){ console.log(arr[i]) } console.log('-------------------------') </script> </body> </html> |
Короче я сделал по возрастанию, а потом сделал реверс
|
DivMan,
Цитата:
|
Часовой пояс GMT +3, время: 22:56. |