Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Методы для объектов JavaScript (https://javascript.ru/forum/misc/37749-metody-dlya-obektov-javascript.html)

olgaa 05.05.2013 18:28

Методы для объектов JavaScript
 
Выбрать несколько случайных элементов из массива.


Это скрипт нахождения случайного ОДНОГО элемента, а как метод через прототип, чтобы из массива выбиралось несколько элементов?
var arr = ["Александр Анатольевич", "2", "Клубника", "@"];
var rand = Math.floor( Math.random() * arr.length );
alert(arr[rand]);

Hekumok 05.05.2013 18:40

Array.prototype.random = function() {
 return this[Math.floor(Math.random() * this.length)] ;
} ;
var arr = [1, 2, 3] ;
alert(arr.random()) ;

olgaa 05.05.2013 18:44

Спасибо большое! А нельзя, чтобы несколько элементов выбиралось?

Hekumok 05.05.2013 19:26

с повторами
Array.prototype.random = function(n) {
 var l = this.length,
 newArr = [] ;
 while(n--)
  newArr.push(this[Math.floor(Math.random() * l)]) ;
 return newArr ;
} ;
var arr = [1, 2, 3, 4, 5] ;
alert(arr.random(3)) ;

Без повторов
Array.prototype.random = function(n) {
 var oldArr = this,
 newArr = [] ;
 while(n--) {
  newArr.push(oldArr.splice(Math.floor(Math.random() * oldArr.length), 1)[0]) ;
 } ;
 return newArr ;
} ;
var arr = [1, 2, 3, 4, 5] ;
alert(arr.random(3)) ;


Часовой пояс GMT +3, время: 08:00.