Упростить функцию jQuery

#jquery

#jquery

Вопрос:

У меня есть следующая функция:

 var randomImages = ["bgr1","bgr2","bgr3","bgr4","bgr5","bgr6"];
var rndNum = Math.floor(Math.random() * randomImages.length);
$(".myDiv").css({ background: "url(/images/"   randomImages[rndNum]   ".gif)" });
  

Поскольку все изображения имеют одинаковое имя, за исключением последнего числового значения, не могу ли я упростить это?

Ответ №1:

 var numImages = 6;
var rndNum = Math.floor(Math.random() * numImages)   1;
$(".myDiv").css({ background: "url(/images/bgr"   rndNum   ".gif)" });
  

Комментарии:

1. Разве для этого не требуется, чтобы массив randomImages оставался определенным? У меня возникло ощущение, что упрощение, к которому стремится OP, заключается в устранении необходимости определять массив, где единственным различием в каждом значении является число в конце.

2. Doh, конечно. Спасибо. Глупая оплошность… Вам не нужно randomImages.length , вам просто нужно 6 . Редактирование…

Ответ №2:

Это может показаться очевидным, но если вы знаете, сколько у вас изображений, вы могли бы заменить случайные изображения.длина с константой, например, 5 для аргументов, тогда вам не нужен массив, поэтому это будет всего одна строка:

 $(".myDiv").css( { background: "url(/images/bgr"   Math.ceil(Math.random() * 5)   ".gif)" } );
  

Примечание: math.ceil было бы лучше, так как тогда вам не нужен 1.

Ответ №3:

Да, вы можете. Обратите внимание, что вы можете захотеть определить константу, а не просто использовать магическое число 6, но идея заключается именно в этом.

 var rndNum = Math.floor(Math.random() * 6)   1;
$(".myDiv").css({ background: "url(/images/bgr"   rndNum   ".gif)" });