用数组值替换方法

时间:2019-01-12 21:48:31

标签: javascript

我正在使用随机函数在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 :(得分:2)

只需将方法名称放入数组中即可,不带括号。然后使用它为对象建立索引,并调用该对象的结果。

在获得随机索引时,还应该使用<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);

答案 1 :(得分:1)

您非常接近!只需更改您设置方向的方式,我想您就知道了:

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

也可以从数组中删除括号,然后将函数名称保留在那里。