Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.08.2012, 18:47
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Как быстро проверить есть ли в массиве нужная строка?
Подскажите способ или алгоритмик как эффективно по скорости проверить есть ли строка в массиве - это массив md5 хэшей?
Или как организовать проверку существует ли наш md5 хэш в списке?
Ответить с цитированием
  #2 (permalink)  
Старый 16.08.2012, 19:06
Профессор
Отправить личное сообщение для Severtain Посмотреть профиль Найти все сообщения от Severtain
 
Регистрация: 25.04.2011
Сообщений: 277

Вы знакомы с Хеш-таблицами! ?
Ответить с цитированием
  #3 (permalink)  
Старый 16.08.2012, 19:25
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Стандартный, но довольно быстрый способ (в древних браузерах нуно писать самому)
['a', 'b', 'c'].indexOf('c'), ну а вообще лучше для таких вещей юзать хешик.
__________________
kobezzza
code monkey
Ответить с цитированием
  #4 (permalink)  
Старый 16.08.2012, 20:10
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Почемучкин Посмотреть сообщение
Подскажите способ или алгоритмик как эффективно по скорости проверить есть ли строка в массиве - это массив md5 хэшей?
Или как организовать проверку существует ли наш md5 хэш в списке?
проверка с помощью "in" работает молниеносно. но для этого придётся перевести данные в другой формат.
Ответить с цитированием
  #5 (permalink)  
Старый 17.08.2012, 06:41
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Простой IndexOf не подходит, т.к. в большом массиве частые проверки будут слишком медленными. Нужно как в базе данных - нахождение ключа по быстрому алгоритму. Но в данном случае не таблица, а просто список md5 строк.

Сообщение от melky Посмотреть сообщение
проверка с помощью "in" работает молниеносно. но для этого придётся перевести данные в другой формат.
В какой другой формат?
Ответить с цитированием
  #6 (permalink)  
Старый 17.08.2012, 07:22
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Почемучкин Посмотреть сообщение
В какой другой формат?
из массива - в объект, где ключ - md5, значение - null.
Ответить с цитированием
  #7 (permalink)  
Старый 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
Ответить с цитированием
  #8 (permalink)  
Старый 17.08.2012, 08:47
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Сообщение от Maxmaxmахimus Посмотреть сообщение
только не null а undefined
С чего бы?

null, undefined, false, true - это всё объекты на которые будет храниться ссылка.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 17.08.2012, 09:31
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 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.
Ответить с цитированием
  #10 (permalink)  
Старый 17.08.2012, 11:03
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Сообщение от nerv_ Посмотреть сообщение
Почемучкин,
var hash = {};
var md5 = "790ae61799df4458e8a66aec1dd51e9c";

hash[ md5 ] = null;

alert( md5 in hash );
// or
alert( hash[ md5 ] );



объекты?
В js всё объекты.)
Но данные вещи ведут себя именно как js обекты, т.е. не создаётся новых экземпляров и не присваивается значение - только ссылка.)
Т.е. память лишня не тртится.
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КАк проверить латиница или кирилица символы введены. strengerst Общие вопросы Javascript 17 08.02.2012 19:22
Как проверить присутствует ли на странице заданный объект? nick Общие вопросы Javascript 7 18.12.2010 19:16
Как проверить ссылку на работоспособнось? Oleg_777 Общие вопросы Javascript 23 19.03.2009 18:57
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40