быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|||||||||||
1 | |||||||||||
Удаление повторяющихся элементов массива в коде расширения Copy All Links для Firefox13.09.2016, 20:49. Показов 933. Ответов 10
Метки нет (Все метки)
Друзья! Всё ли верно в этом коде? Он, я так понял, удаляет дубликаты из массива newArray
Код не мой. Вот расширение Copy All Links для Firefox, оно копирует в буфер обмена строки-ссылки для со всех открытых вкладок. И когда ссылок много, порядка 6000, выводит стандартное сообщение, типа "похоже что сценарий на этой странице не отвечает, можно его остановить или продолжить" и всё такое. И выводит номер строку, где сценарий спотыкается. Эта строка 279 файла copyalllinks.js, а тут это строка
Я в яваскрипт не силён, я больше на плюсах; решил вот спросить, всё ли правильно в этом коде? Быть может, он просто ДОЛОГ и мне следует просто-напросто продолжать сценарий на странице? Спасибо, кто откликнется.
0
|
13.09.2016, 20:49 | |
Ответы с готовыми решениями:
10
Удаление расширения Антимат в firefox Создание расширения для Firefox. Перевод расширений Chrome на Firefox Удаление из массива повторяющихся элементов Удаление повторяющихся элементов массива |
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
|
13.09.2016, 21:47 | 2 |
просто выделяем "последовательно" память
такие конструкции говорят о проходе по двумерному массиву в js это жесть - с массивами... одним циклом for по массиву - зачем два? 2. имхо лучше и работать с объектом - смотря ключи какие... если тысячи объектов, то ... и ключи строки - можно перенести алгоритм любого вида в случае неповторения ключей у вас сложность квадратичная, по-сути, а, если вы постоянно шерстите... оно как часто вызывается? тут деревья нужны с гарантированным доступом к элементу и тогда мы получаем N*lgN, те уже красивее смотрится, но мы же опять-таки поверх интерпетора (можно и предкомпилировать в jit-code) короче швак полный с подобными АТД сейчас вышли экпериментальные "коллекции элементов". ему ток контент получай опять-таки, учитывайте. Добавлено через 9 минут и воообще з Си, из Сэджвика энд Ко... здесь нет очередей, нет деревьев, нет в джаве надо под хэш затачивать имхо, опять-таки - таблицы хешей ключей массивов... если только добавлять, удалять и тд... т.е. проверяться на равность уже при входе будет, причем за Const причем Const меньше логарифмического в подавляющем. поэтому, если JS, то пока нет утвержденных структур, то ... я сам новичок в JS...
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
13.09.2016, 22:41 [ТС] | 3 |
Вообще говоря, я уже проблему решил так. Вместо функции пишу заглушку, получаю массив из 29000 строк в буфере обмена (приложение так и должно работать, оно запихивает все найденные строки ссылки в буфер обмена). Среди них много повторяющихся.
После чего вставляю эти строки в файл, ну а дальше дело техники. Удаляю дубликаты (на плюсах; можно в Notepad++, но он, помимо удаления повторяющихся строк их сортирует, что мне не нужно). Получаю 6000 строк-ссылок. Ровно столько же я получаю, если не пользуюсь заглушкой, то есть через яваскрипт. Но там минус- вылезает зачем-то сообщение. Но хотелось бы вопрос-то добить уже. Можно как-то на яваскрипте сделать, чтобы это дурацкое сообщение не вылезало? Я так понял, код правилен, но работает долго (или памяти много жрёт, я не знаю.). Но задержка времени на мой взгляд, мала. Секунд 10 может. Не из-за чего беспокоиться. Ну покрутится цикл 10 секунд ничего страшного, на мой взгляд. Можно галку поставить "не показывать это сообщение", но хотелось бы покрасивее вопрос решить.
0
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
||||||
13.09.2016, 23:20 | 4 | |||||
Так можно отсортировать в один проход
0
|
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
|
13.09.2016, 23:27 | 5 |
чего? какую заглушку? буфер обмена чего?
и что вы сними делаете? надеюсь не на страницу сразу, онлайн выкладываете? Добавлено через 5 минут если геометрия какая и размер не изменяется, те i, j фиксированы, то, для обновления, можно и циклом обычным и с вложенностью 2 можно... наверное, в таком случае array больше подойдет. в случае работы с графикой нужен обычный массив. мысли новичка.
0
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
||||||
13.09.2016, 23:31 | 6 | |||||
тогда ловите для тестирования
0
|
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
||||||
13.09.2016, 23:44 | 7 | |||||
замудренно. так заикой останешься... этой функции надо избегать - ооособенно в длинных циклах, хотя, если по ресурсам пофиг, то ...
0
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
||||||
13.09.2016, 23:55 | 8 | |||||
эт давно не обязательно, на некоторых тестах может отрабатывать больше по времени и неудобно по синтаксису так взял цикл и поставил куда надо, а еще лишняя переменная
вы не совсем поняли значение этой функции здесь изменится сам исходный массив
0
|
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
||||||
14.09.2016, 00:02 | 9 | |||||
имя массива объявить, если для графики и передать краткому циклу - см. выше эт, самое эффективное, особенно если память выделять еще заранее и столько, чтобы потом delete )) ладно хоть запускают SIMD - тож экспирементально. так легко
0
|
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
|
14.09.2016, 14:38 | 11 |
я об этом писал выше, но пока
скоро, думаю, все будет...
0
|
14.09.2016, 14:38 | |
14.09.2016, 14:38 | |
Помогаю со студенческими работами здесь
11
Удаление из массива повторяющихся элементов Удаление из массива повторяющихся элементов Удаление повторяющихся элементов из упорядоченного массива Сохранение строки в массив и удаление повторяющихся элементов массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |