Заменить метод значением массива

1

Я использую случайную функцию для случайного перемещения между 4 слайдерами, вот мой код:

var swipers = [swiper1, swiper2, swiper3, swiper4];
setInterval(function(){
    var rand = Math.floor(Math.random() * 4);
    swipers[rand].slideNext();
    }, 3000);
}

Как мне поступить, если я хочу рандомизировать между slideNext() и slidePrev()? Я пробовал много вещей, как это:

var direction = ['slideNext()', 'slidePrev()'];
var swipers = [swiper1, swiper2, swiper3, swiper4];
setInterval(function(){
   var randx = Math.floor(Math.random() * 4);
   var randy = Math.floor(Math.random() * 2);
   swipers[randx].direction[randy];
}, 3000);

Но это не работает, вероятно, по очевидным причинам, но, пожалуйста, помогите мне понять, почему это не работает. И как я мог бы достичь этого?

Теги:

2 ответа

0

Ты довольно близко! Просто измените, как вы устанавливаете направление, и я думаю, что вы поняли:

swipers[randx][direction[randy]]();

Также удалите скобки из вашего массива и просто оставьте там имена функций.

0

Просто поместите имя метода в массивы, без скобок. Затем используйте его для индексации объекта и назовите результат этого.

Вы также должны использовать <arrayname>.length вместо жесткого кодирования длин при получении случайного индекса, поэтому вам не нужно изменять его, если вы добавите больше указателей или указателей.

var direction = ['slideNext', 'slidePrev'];
var swipers = [swiper1, swiper2, swiper3, swiper4];
setInterval(function(){
   var randx = Math.floor(Math.random() * swipers.length);
   var randy = Math.floor(Math.random() * direction.length);
   swipers[randx][direction[randy]]();
}, 3000);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню