It would be better to fill the array with numbers from 1 to 10, and then shuffle it, like this:
var myArray = [1,2,3,4,5,6,7,8,9,10];
//shuffle array
//code from http://stackoverflow.com/a/2450976/1223693
var i = myArray.length, j, temp;
if ( i === 0 ) return false;
while ( --i ) {
j = Math.floor( Math.random() * ( i + 1 ) );
temp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = temp;
}
//done
alert(myArray);
Your current method is very slow because
- it has an inner loop
- it may generate wrong numbers many many times before it generates a correct number