| 
 | 
	
	
	
	
	
		
	
		
		
		
			
			 
			
				16.08.2012, 18:47
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.05.2011 
					
					
					
						Сообщений: 241
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как быстро проверить есть ли в массиве нужная строка?
			 
			
		
		
		
		Подскажите способ или алгоритмик как эффективно по скорости проверить есть ли строка в массиве - это массив md5 хэшей? 
Или как организовать проверку существует ли наш md5 хэш в списке? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.08.2012, 19:06
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.04.2011 
					
					
					
						Сообщений: 280
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Вы знакомы с Хеш-таблицами! ? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.08.2012, 19:25
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Быдлокодер;) 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.11.2010 
					
					
					
						Сообщений: 4,338
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Стандартный, но довольно быстрый способ (в древних браузерах нуно писать самому) 
['a', 'b', 'c'].indexOf('c'), ну а вообще лучше для таких вещей юзать хешик. 
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.08.2012, 20:10
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 sinistral 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.03.2011 
					
					
					
						Сообщений: 5,418
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Почемучкин
			 
		
	 | 
 
	
		Подскажите способ или алгоритмик как эффективно по скорости проверить есть ли строка в массиве - это массив md5 хэшей? 
Или как организовать проверку существует ли наш md5 хэш в списке?
	 | 
 
	
 
 проверка с помощью "in" работает молниеносно. но для этого придётся перевести данные в другой формат.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.08.2012, 06:41
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.05.2011 
					
					
					
						Сообщений: 241
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Простой IndexOf не подходит, т.к. в большом массиве частые проверки будут слишком медленными. Нужно как в базе данных - нахождение ключа по быстрому алгоритму. Но в данном случае не таблица, а просто список md5 строк.
	
 
	
		
			Сообщение от melky
			 
		
	 | 
 
	| 
		проверка с помощью "in" работает молниеносно. но для этого придётся перевести данные в другой формат.
	 | 
 
	
 
 В какой другой формат?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.08.2012, 07:22
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 sinistral 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.03.2011 
					
					
					
						Сообщений: 5,418
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Почемучкин
			 
		
	 | 
 
	| 
		В какой другой формат?
	 | 
 
	
 
 из массива - в объект, где ключ - md5, значение - null.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.08.2012, 08:05
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.05.2011 
					
					
					
						Сообщений: 241
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от melky
			 
		
	 | 
 
	| 
		из массива - в объект, где ключ - md5, значение - null.
	 | 
 
	
 
 
var md5 = "790ae61799df4458e8a66aec1dd51e9c";
hashes.push( {md5:null} );
Так?
 
Не получается:
 
var hashes=[];
var md5 = "790ae61799df4458e8a66aec1dd51e9c";
hashes.push( {md5:null} );
alert( md5 in hashes );
выдает  false 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.08.2012, 08:47
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Maxmaxmахimus
			 
		
	 | 
 
	| 
		только не null а undefined
	 | 
 
	
 
 С чего бы?
 
null, undefined, false, true - это всё объекты на которые будет храниться ссылка.  
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.08.2012, 09:31
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 junior 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.11.2011 
					
					
					
						Сообщений: 3,924
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Почемучкин,
 
var hash = {};
var md5 = "790ae61799df4458e8a66aec1dd51e9c";
hash[ md5 ] = null;
alert( md5 in hash );
// or
alert( hash[ md5 ] );
	
 
	| 
		
			Сообщение от Aetae
			
		
	 | 
 
	| 
		null, undefined, false, true - это всё объекты на которые будет храниться ссылка.
	 | 
 
	
 
 объекты?  
		
	
		
		
		
		
		
			
				__________________ 
				Чебурашка стал символом олимпийских игр. А чего достиг ты? 
Тишина - самый громкий звук
			 
		
		
		
		
		
						  
				
				Последний раз редактировалось nerv_, 17.08.2012 в 09:34.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.08.2012, 11:03
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от nerv_
			 
		
	 | 
 
	
		Почемучкин, 
var hash = {};
var md5 = "790ae61799df4458e8a66aec1dd51e9c";
hash[ md5 ] = null;
alert( md5 in hash );
// or
alert( hash[ md5 ] );
 
 
 
объекты?
	 | 
 
	
 
 В js всё объекты.) 
Но данные вещи ведут себя именно как js  обекты, т.е. не создаётся новых экземпляров и не присваивается значение - только ссылка.) 
Т.е. память лишня не тртится.  
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |