![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| macdack |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 15.4.2010 Репутация: нет Всего: нет |
есть начальный массив []
в произвольном хаотичном порядке пользователем определяются элементы этого массива и их номера записываются в нанабор {} как максимально быстро и просто получить новый массив выбранных элементов с сохранением их порядка относительно друг друга в начальном массиве |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Опять очень сумбурный вопрос. Что значит "нанабор {}"? Если бы был пример (типа имеем массив [a,b,c,d] - на вход даем массив выбранных индексов [2, 0] - выбран третий и первый элементы - в ответ ожидаем массив [a, c]) - было бы легче.
Если приведенный мною пример корректен (а я ваш вопрос именно так понял) - то чем плох простой перебор в цикле? Демо: http://jsfiddle.net/Aliance/coacv5ze/ |
|||
|
||||
| macdack |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 15.4.2010 Репутация: нет Всего: нет |
не непонял - зачем ты в конце сортуруешь то
как обеспечивается сохранность поралка следования в оригинальном массиве ? Это сообщение отредактировал(а) macdack - 5.9.2014, 15:36 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Вообще-то если сортировать массив choosenKeys в первых строчках функции - то порядок элементов в результате будет таким как надо. Сортировка в конце - не нужна.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| macdack |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 15.4.2010 Репутация: нет Всего: нет |
понял
Это сообщение отредактировал(а) macdack - 5.9.2014, 17:06 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| macdack |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 15.4.2010 Репутация: нет Всего: нет |
ksnk, согласен с тобой
- но не работает кот Это сообщение отредактировал(а) Aliance - 8.9.2014, 08:20 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
А коты вообще работают? Добавлено @ 17:15
? result - это массив, а не функция исправил в коде. http://jsfiddle.net/qvvbq3dt/ Это сообщение отредактировал(а) ksnk - 5.9.2014, 17:16 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| macdack |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 15.4.2010 Репутация: нет Всего: нет |
коты в принципе могут починять примуса
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 2 Всего: 101 |
если важен только порядок, можно вообще не сортировать http://jsfiddle.net/9yghkjh9/
|
|||
|
||||
| macdack |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 15.4.2010 Репутация: нет Всего: нет |
ksnk, спасибо - твой кот победивши
baldina, твой кот непонятный и выдает фигню не мяукает и сортировка нужна |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 2 Всего: 101 |
если важен не только порядок, но и ключи, то и тогда можно обойтись без сортировки, сохраняя сложность O(n)
http://jsfiddle.net/6q4bdb8n/ правда, на пару строчек длиннее, чем с sort ну так разбирайся, для тебя же пишем. что именно непонятно? |
|||
|
||||
| macdack |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 15.4.2010 Репутация: нет Всего: нет |
baldina, спасибо
|
|||
|
||||
| baldina |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 2 Всего: 101 |
ну вообще-то в моём первом "непонятном" варианте это и выдавалось сразу. разница между
и в том, что в последнем варианте ключи идут последовательно, а в первом массив может оказаться разреженным (sparse). если итоговый массив обрабатывать так
или так
то разреженность массива (и даже присутствие любых ключей, не только числовых) проблемой не является, в то время как
предполагает (строго!) наличие последовательных числовых ключей. с другой стороны, for..in перебирает и унаследованные свойства (из прототипа), что может быть нежелательно самый удобный вариант forEach (но поддерживается не во всех движках) |
||||||||||
|
|||||||||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Проблема в разреженным массивом будет в том, что его свойство length будет указывать на неверное число (максимальный индекс + 1). Кроме того (точно не помню), возможно выделит памяти больше, чем реально требуется.
ну это легко контролируется условием if (ar.hasOwnProperty(i)) {} |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |