2012-05-11 2 views
2

У меня есть следующий кодJquery Случайных Math без повторения предыдущего вара

var link = []; 
link[0] = "css/pink/pink.css"; 
link[1] = "css/blue/blue.css"; 
link[3] = ""; 
function changeStyle() { 
var ran = Math.floor(Math.random() * link.length); 
    var style = link[ran]; 
    jQuery('link[id=style-switch]').attr({href : style}); 
} 

Он работает, хотя я не уверен, о том, как сделать это не повторить предыдущий выбор, пока они не были все петельными через. Есть идеи?

+0

Я бы просто петлю через 1 на 1 вместо того, чтобы пытаться случайно. –

+1

'Math.random()' это javascript, а не jQuery. – jrummell

ответ

2

Вы можете использовать перетасовку вашего массива (в основном случайную перестановку элементов массива) - это потребует сохранения отдельного перетасованного массива и индекса в нем. Вот пример для Fisher-Yates shuffle in Javascript.

+0

Ai yi yi, это немного сложнее, не так ли? Все, что нужно сделать OP, - это зависание с ранее выбранными случайными значениями и убедитесь, что случайное значение, которое он только что выбрал, не находится в этом массиве. –

+0

Не совсем, почему вы так думаете? – BrokenGlass

+0

Слишком много длинных слов. :(Но на самом деле, это простая проблема. Нет необходимости хранить перетасованный массив и индекс, когда вам нужно только один массив, особенно потому, что здесь так мало возможностей. Скорость не является проблемой. –

Смежные вопросы