Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Выборка из массива


Автор: Aliance 27.1.2005, 22:17
Как вывести определенные числа из данных?
Скажем, дано числа 0-19, нужно вывести: 0-3, 6-9, 11-16, 19...а отбросить, соотв., 4,5,10,17,18?
Пробовал с массивами, но не знаю как удалить данные из опр. пункта массива при этом сохраняя индекс?! smile

Автор: Sardar 27.1.2005, 23:06
Цитата(Aliance @ 27.1.2005, 21:17)
Пробовал с массивами, но не знаю как удалить данные из опр. пункта массива при этом сохраняя индекс?!

Т.е. на пустом месте имеем null или как? Тогда по моему ты уже понял вопрос smile

Если нужно удалить элемент, что бы они сдвинулись, то читаем про splice, для старых браузеров ипсользуем: http://forum.vingrad.ru/index.php?showtopic=35258

Автор: Aliance 28.1.2005, 00:03
Sardar
Неет, грубо говоря такой код:
Код

var myArray = ["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"];
for (var i = 0; i < myArray.length; i++) {
   document.write(myArray[i]);
}


Выводит 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
А мне не нужно выводить, скажем, 1,2,5,6,7,10,14,16 и 17
Как реализовать? Может без помощи массивов?
Сказу говорю, иннерХТМЛ не предлагать :-) У меня там окола 200 чисел - запарюсь )))

Автор: Sardar 28.1.2005, 00:49
Aliance что за задача? Что за цифры с потолка? Что то левое ты делаешь, что должно решатся просто...

Автор: Aliance 28.1.2005, 15:31
Sardar
Мне просто нужно вывести числа (от 10 до 9000 минус ненужные)

Автор: Sardar 28.1.2005, 16:27
Цитата(Aliance @ 28.1.2005, 14:31)
Мне просто нужно вывести числа (от 10 до 9000 минус ненужные)

Aliance что за вопрос? Прочитай его хорошенько и представь что здесь нет телепатов smile
Подчиняются числа каким нибудь правилам? Другими словами можно ли пресказать числа? Если нет, то большой массив, другого пути нет. Впрочем есть, сядь и подумай, что ты конкретно хочешь сделать. Нет не как порешать вот эту проблему с числами, а что за продукт ты делаешь в целом, ибо чувствую что не в ту сторону ты копаешь... smile

Автор: Alx 28.1.2005, 17:08
Aliance
создаешь массив с ненужными числами, делаешь один for (для массива со всеми числами) и внутри него второй for (для массива с ненужными числами), в этом цикле проверяешь соответствует текущее число (из верхнего цикла) хоть одному из нижнего. если да, то не печатаешь. иначе печатаешь. это ОЧЕНЬ медленно, но по-другому не сделаешь!

Автор: Aliance 28.1.2005, 17:15
Sardar
Хм...как бы объяснить так, чтобы ты понял. Задачи у меня как таковой нет. Я просто сел и решил сделать это именно так.
Вот и хочу узнать можно ли как-то сделать кроме как через длинный массив (т.к. через массив я реализовал.)
Если нет - достаточно простого ответа - нет ;)

Автор: Sardar 28.1.2005, 18:06
Тогда это в алгоритмы smile
Цитата(Alx @ 28.1.2005, 16:08)
но по-другому не сделаешь!

Задача выкинуть из последовательности чисел некоторые числа, т.е. основная операция это поиск в запретном листе. Тогда 3 варианта:
  • сортируем массив запретных чисел и ищем в нём бинарным поиском O(log2(N)) + последующим перебором с предидущей позиции
  • строим Б+ дерево по запретным числам, метод тот же что и выше, но дуг у нас не 2 а несколько, это для очень больших массивов
  • кладём запретные числа в хеш таблицу, операция поиска у неё самая эффективная, но нет преимущества запоминания предидущих результатов поиска, что в некоторых задачах делает её менее эффективной чем первые два.

Первый и последний вариант очень просто реализовать в JS, последний уже реализован как обьекты smile

Автор: Aliance 9.2.2005, 21:03
Sardar
А я нашел хорошее и простое решение - функция concat()!!! smile
Создаем массивы нужных чисел и ею объединяем их :-))) smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)