Перемешать в произвольном порядке

Тема в разделе "JavaScript", создана пользователем Горбушка, 16 окт 2012.

Модераторы: ZiX
  1. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.036
    Симпатии:
    2.037
    Вопрос в следующем:
    на сайте есть слайдер, представляющий из себя несколько ссылок с очень сложными CSS и большим содержимым. Требуется их перемешать в произвольном порядке.

    Код слайдера выкладывать особо смысла нет, мне нужно просто перемешать <a> в случайном порядке внутри определённого <div>...

    Кто может подстказать?
     
  2. BaNru

    BaNru Постоялец

    Регистр.:
    20 ноя 2008
    Сообщения:
    126
    Симпатии:
    52
    Math.random

    Алгоритм который я вижу.
    Считаем количество элементов, вроде length с этим справится.
    Заносим в Math.random, которую занести в функцию и вызывать по таймауту срабатывания слайдера.
    Высчитываем на сколько сдвинуть по принципу слайдера и множим на число полученное из рандома, чтобы получить этот сдвиг.
     
    Горбушка нравится это.
  3. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.036
    Симпатии:
    2.037
    BaNru, не совсем то... Я хотел именно перемешать элементы, но получилось тоже не плохо. Если кому-то пригодится:

     
  4. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Код:
    function ArrayShuffle(a) {
      var d,
      c,
      b = a.length;
      while (b) {
        c = Math.floor(Math.random() * b);
        d = a[--b];
        a[b] = a[c];
        a[c] = d
      }
      return a;
    }
     
    var lst = [0, 1, 2, 3, 4, 5, 6, 7];
    document.write(ArrayShuffle(lst));
    P.S. Гугля лучший друг, не стоит забывать об этом.

    P.P.S. Порой мне кажется, что подобные вопросы задаются лишь с целью набора постов... вроде и правила не нарушаешь, вместе с тем и смысла в вопросе не вижу, т.к. гуглится ответ довольно легко.
     
    Горбушка и antiterror нравится это.