|
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,590
|
|
Сообщение от 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,590
|
|
Сообщение от nerv_
|
Почемучкин,
var hash = {};
var md5 = "790ae61799df4458e8a66aec1dd51e9c";
hash[ md5 ] = null;
alert( md5 in hash );
// or
alert( hash[ md5 ] );
объекты?
|
В js всё объекты.)
Но данные вещи ведут себя именно как js обекты, т.е. не создаётся новых экземпляров и не присваивается значение - только ссылка.)
Т.е. память лишня не тртится.
__________________
29375, 35
|
|
|
|