Выборка из массива JS, jQuery

212
14 апреля 2017, 22:06

Помогите сделать выборку из массива так, что-бы цифры из массива не повторялись в классах. То есть для каждого класса свое число из массива каждые 10 секунд и каждый раз по разному.

setInterval(function(){
    var numbs = [700, 1400, 2100, 2800, 3500, 4200];
    var random = Math.floor(Math.random() * numbs.length);
    $(".creation").fadeIn(500).delay(200).fadeOut(500);
    $(".sheriff").delay(numbs[rand]).fadeIn(500).delay(200).fadeOut(500);
    $(".tv-tower").delay(numbs[rand]).fadeIn(500).delay(200).fadeOut(500);
    $(".mart").delay(numbs[rand]).fadeIn(500).delay(200).fadeOut(500);
    $(".mail").delay(numbs[rand]).fadeIn(500).delay(200).fadeOut(500);
    $(".market").delay(numbs[rand]).fadeIn(500).delay(200).fadeOut(500);
    $(".bath").delay(numbs[rand]).fadeIn(500).delay(200).fadeOut(500);
}, 10000);
Answer 1
setInterval(function(){
    var numbs = [700, 1400, 2100, 2800, 3500, 4200];
    function getValueFromArray() {
      var randomIndex = Math.floor(Math.random() * numbs.length);
      var result = numbs[randomIndex];
      numbs.splice(randomIndex, 1);
      return result;
    }
    $(".creation").fadeIn(500).delay(200).fadeOut(500);
    $(".sheriff").delay(getValueFromArray()).fadeIn(500).delay(200).fadeOut(500);
    $(".tv-tower").delay(getValueFromArray()).fadeIn(500).delay(200).fadeOut(500);
    $(".mart").delay(getValueFromArray()).fadeIn(500).delay(200).fadeOut(500);
    $(".mail").delay(getValueFromArray()).fadeIn(500).delay(200).fadeOut(500);
    $(".market").delay(getValueFromArray()).fadeIn(500).delay(200).fadeOut(500);
    $(".bath").delay(getValueFromArray()).fadeIn(500).delay(200).fadeOut(500);
}, 10000);

Демонстрация:

    setInterval(function (){ 
     
        var numbs = [700, 1400, 2100, 2800, 3500, 4200]; 
     
        function getValueFromArray() { 
          var randomIndex = Math.floor(Math.random() * numbs.length); 
          var result = numbs[randomIndex]; 
          numbs.splice(randomIndex, 1); 
          return result; 
        } 
     
        var temp = []; 
        while (numbs.length > 0) 
          temp.push(getValueFromArray()); 
 
        console.log(temp); 
    }, 10000);

Answer 2

Когда нужно очистишь интервал

var i = 0; 
var numbs = [700, 1400, 2100, 2800, 3500, 4200]; 
setInterval(function(){ 
         
    var b = numbs.slice(i).concat(numbs.slice(0,i)); 
    $(".creation").fadeIn(500).delay(200).fadeOut(500); 
    $(".sheriff").delay(b[0]).fadeIn(500).delay(200).fadeOut(500); 
    $(".tv-tower").delay(b[1]).fadeIn(500).delay(200).fadeOut(500); 
    $(".mart").delay(b[2]).fadeIn(500).delay(200).fadeOut(500); 
    $(".mail").delay(b[3]).fadeIn(500).delay(200).fadeOut(500); 
    $(".market").delay(b[4]).fadeIn(500).delay(200).fadeOut(500); 
    $(".bath").delay(b[5]).fadeIn(500).delay(200).fadeOut(500); 
    i++; 
}, 10000);

READ ALSO
Отловить нажатие по картинке в TinyMCE

Отловить нажатие по картинке в TinyMCE

Добрый деньВесь вопрос в заголовке

201
Как изменить аккордион?

Как изменить аккордион?

Добрый день! Есть скрипт обычного меню-аккордионПри нажатии на любой раздел отрываются его подразделы

177
Как написать скрипт, чтобы при изменении разрешения скрипт включался\выключался

Как написать скрипт, чтобы при изменении разрешения скрипт включался\выключался

Я хочу исползовать плагин jQuery mmenu, чтобы он начил работать при разрешении 1000px? вот только не знаю как написать скриптПОмогите!

168
Анимация печати текста

Анимация печати текста

У меня есть тег DIV с текстом внутриМожно ли изменить текстовое содержимое в цикле с помощью печатающего эффекта, где он выводится, а затем...

169