Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2016, 10:49
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 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']
]
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2016, 10:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

DivMan,
(a,b) => b[0] - a[0]
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2016, 17:59
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 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>
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2016, 18:06
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 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]))
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2016, 18:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от DivMan
return a[2] < b[2];
Сообщение от DivMan
a, b) => b[0] < a[0]
откуда вы это взяли?
Ответить с цитированием
  #6 (permalink)  
Старый 03.12.2016, 22:07
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Исправил, всё равно не работает, и никто не может помочь

http://plnkr.co/edit/K8EdtgqrClE7PeZHLeCZ?p=preview
Ответить с цитированием
  #7 (permalink)  
Старый 03.12.2016, 22:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от DivMan
Исправил,
что именно исравлено? может посмотреть документацию на sort
Ответить с цитированием
  #8 (permalink)  
Старый 03.12.2016, 22:38
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 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>
Ответить с цитированием
  #9 (permalink)  
Старый 03.12.2016, 23:03
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Короче я сделал по возрастанию, а потом сделал реверс
Ответить с цитированием
  #10 (permalink)  
Старый 03.12.2016, 23:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

DivMan,
Сообщение от рони
может посмотреть документацию на sort
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение всех элементов двух массивов. sharun Общие вопросы Javascript 27 14.05.2018 15:38
JavaScript/jQuery сортировка элементов DOM onotole Events/DOM/Window 13 26.02.2015 12:54
Сортировка элементов страницы frutality jQuery 2 08.02.2013 14:24
Сортировка элементов по количеству Dorian_bs Общие вопросы Javascript 22 10.10.2011 12:19
Как ограничить количество элементов (списков <li>) массивов Naum Элементы интерфейса 2 04.04.2011 11:56