Что эквивалентно .sample в Javascript? - PullRequest
1 голос
/ 15 февраля 2012

Я работаю над небольшим расширением Chrome, которое скоро будет выпущено, однако в этом расширении я должен взять случайный элемент из массива и отобразить его на экране. В прошлом я работал с большим количеством кода на Ruby и помню метод '.sample', который отображает случайный элемент из массива на экране.

Пример (в рубине):

farm_animals = ['cow', 'chicken', 'pig', 'horse']
puts farm_animals.sample

Выход может закончиться чем-то вроде ...

>> cow

Есть ли эквивалент в этом удобном методе массива в Javascript? Спасибо!

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Попробуйте:

var farm_animals = ['cow', 'chicken', 'pig', 'horse']
alert(farm_animals[Math.floor ( Math.random() * farm_animals.length )])

или как функция:

function sample(array) {
  return array[Math.floor ( Math.random() * array.length )]
}

console.log(sample(farm_animals))
2 голосов
/ 15 февраля 2012

Если вы не против взлома встроенных прототипов объектов:

Array.prototype.sample = function() {
  return this[~~(Math.random() * this.length)];
}

Тогда

var samp = ["hello", "friendly", "world"].sample();

даст вам случайный элемент.

Много- многие, большинство - люди скажут, что такая не очень полезная функция не будет стоить греха за загрязнение встроенного прототипа.Следуй за своим блаженством.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...