| 
	| 
	
	| 
		
	| 
			
			 
			
				30.01.2013, 14:46
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 31.01.2010 
						Сообщений: 229
					 
		
 |  |  
	| 
				сортировка sort
			 почему то не правильно сортирует 
function sDecrease(i, ii){ // По убыванию
	if(i > ii) return -1; else if (i < ii) return 1; else return 0;
}
Вывело вот что 99,9,84,77,60,51,44,32,27,19 
А как нужно вы наверное уже догадались!! |  |  
	| 
		
	| 
			
			 
			
				30.01.2013, 14:53
			
			
			
		 |  
	| 
		
			
			| без статуса       |  | 
					Регистрация: 25.05.2012 
						Сообщений: 8,219
					 
		
 |  |  
	| 
http://javascript.ru/array/reverse
	
 
	| Сообщение от qwermjk |  
	| Вывело вот что 99,9,84,77,60,51,44,32,27,19 |  
	
 |  |  
	| 
		
	| 
			
			 
			
				30.01.2013, 15:10
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| qwermjk,Вы сортировали строки а не числа поэтому такой результат.
 |  |  
	| 
		
	| 
			
			 
			
				30.01.2013, 15:17
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 31.01.2010 
						Сообщений: 229
					 
		
 |  |  
	| 
	
 
	| Сообщение от рони |  
	| Вы сортировали строки а не числа поэтому такой результат. |  
	
 да я уже почитал!! 
Всегда пишу сообщение на форуме быстрее чем нахожу ответ! |  |  
	| 
		
	| 
			
			 
			
				30.01.2013, 17:44
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 31.01.2010 
						Сообщений: 229
					 
		
 |  |  
	| Когда функция возвращает 1, то элементы меняются между собой?Когда возвращает -1 то что?
 И когда 0, то не меняет??
 сижу мозгую час, не могу более сложную функцию сортировки создать, по двум критериям
 |  |  
	| 
		
	| 
			
			 
			
				30.01.2013, 18:23
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| 
	
 
	| Сообщение от qwermjk |  
	| создать, по двум критериям |  
	
  вместо нуля подставляйте сортировку по второму параметру |  |  
	| 
		
	| 
			
			 
			
				30.01.2013, 19:23
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 31.01.2010 
						Сообщений: 229
					 
		
 |  |  
	| У меня как то получилось, логически дошёл до этого! 
var chat_sort2 = 1, chat_sort3 = 1;
function chat_sort(){ // сортировка пользователей чата
	var chat_mas = [];
	$('#chat_list1 div').each(function(i){
		chat_mas[i] = [$(this).attr('percent'), $(this).attr('status'), $(this).html()];
	});
	
	if(chat_sort2 == 1 && chat_sort3 == 1){ // все от 0
		chat_mas.sort(function(a, b){
			return a[0] - b[0];
		});
	} else if(chat_sort2 == 1 && chat_sort3 == 2){ // все от 100
		chat_mas.sort(function(a, b){
			return b[0] - a[0];
		});
	} else if(chat_sort2 == 2 && chat_sort3 == 1){ // чат от 0
		chat_mas.sort(function(a, b){
			if(a[1] == 2 && b[1] == 2) return a[0] - b[0];
			if(a[1] == 2 && b[1] == 3) return -1;
			if(a[1] == 3 && b[1] == 2) return 1;
			if(a[1] == 3 && b[1] == 3) return a[0] - b[0];
			return 0;
		});
	} else if(chat_sort2 == 2 && chat_sort3 == 2){ // чат от 100
		chat_mas.sort(function(a, b){
			if(a[1] == 2 && b[1] == 2) return b[0] - a[0];
			if(a[1] == 2 && b[1] == 3) return -1;
			if(a[1] == 3 && b[1] == 2) return 1;
			if(a[1] == 3 && b[1] == 3) return b[0] - a[0];
			return 0;
		});
	} else if(chat_sort2 == 3 && chat_sort3 == 1){ // игра от 0
		chat_mas.sort(function(a, b){
			if(a[1] == 2 && b[1] == 2) return a[0] - b[0];
			if(a[1] == 2 && b[1] == 3) return 1;
			if(a[1] == 3 && b[1] == 2) return -1;
			if(a[1] == 3 && b[1] == 3) return a[0] - b[0];
			return 0;
		});
	} else if(chat_sort2 == 3 && chat_sort3 == 2){ // игра от 100
		chat_mas.sort(function(a, b){
			if(a[1] == 2 && b[1] == 2) return b[0] - a[0];
			if(a[1] == 2 && b[1] == 3) return 1;
			if(a[1] == 3 && b[1] == 2) return -1;
			if(a[1] == 3 && b[1] == 3) return b[0] - a[0];
			return 0;
		});
	}
	
	var text_mas = '';
	for(i=0; i<chat_mas.length; i++){
		text_mas += '<div class="chat_user" percent="'+chat_mas[i][0]+'" status="'+chat_mas[i][1]+'">'+chat_mas[i][2]+'</div>';
	}
	
	$('#chat_list1').html(text_mas);
}
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				30.01.2013, 19:50
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 08.01.2012 
						Сообщений: 253
					 
		
 |  |  
	| qwermjk,
Жесть какая получилась. 
 
Этот кусок можно упростить:
 
function (a, b) {
    if(a[1] == 2 && b[1] == 2) return a[0] - b[0];
    if(a[1] == 2 && b[1] == 3) return -1;
    if(a[1] == 3 && b[1] == 2) return 1;
    if(a[1] == 3 && b[1] == 3) return a[0] - b[0];
    return 0;
}
Получится всего лишь:
 
function(a, b) {
    if(a[1] == b[1]) return a[0] - b[0];    
    return a[1] - b[1];
}
 			 Последний раз редактировалось Hoshinokoe, 30.01.2013 в 19:53.
 |  |  
	| 
		
	| 
			
			 
			
				31.01.2013, 18:45
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 31.01.2010 
						Сообщений: 229
					 
		
 |  |  
	| Hoshinokoe, 
 Ну вот как получилось!!
 
var chat_sort2 = 1, chat_sort3 = 1;
function chat_sort(){ // сортировка пользователей чата
	var chat_mas = [];
	$('#chat_list1 div').each(function(i){
		chat_mas[i] = [$(this).attr('percent'), $(this).attr('status'), $(this).html()];
	});
	
	if(chat_sort2 == 1 && chat_sort3 == 1){ // все от 0
		chat_mas.sort(function(a, b){
			return a[0] - b[0];
		});
	} else if(chat_sort2 == 1 && chat_sort3 == 2){ // все от 100
		chat_mas.sort(function(a, b){
			return b[0] - a[0];
		});
	} else if(chat_sort2 == 2 && chat_sort3 == 1){ // чат от 0
		chat_mas.sort(function(a, b){
			if(a[1] == b[1]) return a[0] - b[0];
			return a[1] - b[1];
		});
	} else if(chat_sort2 == 2 && chat_sort3 == 2){ // чат от 100
		chat_mas.sort(function(a, b){
			if(a[1] == b[1]) return b[0] - a[0];
			return a[1] - b[1];
		});
	} else if(chat_sort2 == 3 && chat_sort3 == 1){ // игра от 0
		chat_mas.sort(function(a, b){
			if(a[1] == b[1]) return a[0] - b[0];
			return b[1] - a[1];
		});
	} else if(chat_sort2 == 3 && chat_sort3 == 2){ // игра от 100
		chat_mas.sort(function(a, b){
			if(a[1] == b[1]) return b[0] - a[0];
			return b[1] - a[1];
		});
	}
	
	var text_mas = '';
	for(i=0; i<chat_mas.length; i++){
		text_mas += '<div class="chat_user" percent="'+chat_mas[i][0]+'" status="'+chat_mas[i][1]+'">'+chat_mas[i][2]+'</div>';
	}
	
	$('#chat_list1').html(text_mas);
}
 
			
			
	
			
			
			
			
			
				  |  |  |  |