03.12.2016, 10:49
|
Профессор
|
|
Регистрация: 08.03.2016
Сообщений: 429
|
|
Сортировка элементов разных массивов
Есть массив, в котором массивы.
Как их отсортировать, что бы после сортировки, они выводились по убыванию возраста?
Сейчас такой вид
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']
]
|
|
03.12.2016, 10:55
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
DivMan,
(a,b) => b[0] - a[0]
|
|
03.12.2016, 17:59
|
Профессор
|
|
Регистрация: 08.03.2016
Сообщений: 429
|
|
Надо отсортировать массивы, по убыванию возраста. Я их отсортировал, но почему они не отсортировались?
Входить надо, через контакт
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>
|
|
03.12.2016, 18:06
|
Профессор
|
|
Регистрация: 08.03.2016
Сообщений: 429
|
|
Вот пример на подобии, который тоже почему-то не работает
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]))
|
|
03.12.2016, 18:31
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Сообщение от DivMan
|
return a[2] < b[2];
|
Сообщение от DivMan
|
a, b) => b[0] < a[0]
|
откуда вы это взяли?
|
|
03.12.2016, 22:20
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Сообщение от DivMan
|
Исправил,
|
что именно исравлено? может посмотреть документацию на sort
|
|
03.12.2016, 22:38
|
Профессор
|
|
Регистрация: 08.03.2016
Сообщений: 429
|
|
Первые массивы нормально сортируются, а те, которые сами подгружаются, то они не сортируются
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>
|
|
03.12.2016, 23:03
|
Профессор
|
|
Регистрация: 08.03.2016
Сообщений: 429
|
|
Короче я сделал по возрастанию, а потом сделал реверс
|
|
03.12.2016, 23:46
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
DivMan,
Сообщение от рони
|
может посмотреть документацию на sort
|
|
|
|
|