2012-02-15 71 views
1

我正在製作一個即將發佈的小型Chrome擴展程序,但是在此擴展中,我必須從數組中隨機取出一個項目並將其顯示在屏幕上。在過去,我已經使用了很多Ruby代碼,並且記住了方法'.sample',它在屏幕上顯示一個數組中的隨機項。Javascript中的.sample等價於什麼?

例子(紅寶石):

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

輸出最終可能會成爲像...

>> cow 

是否有一個相當於在Javascript這個方便的陣列的方法?謝謝!

+1

我不熟悉Ruby,並且在google中搜索'.sample'並沒有發現任何東西。你能指點一下我可以看到樣品的方向嗎?我可以幫你解決問題 – Seth 2012-02-15 00:58:40

+0

@Seth這裏是Rubydocs數組類和方法。這個.sample方法是按照字母順序在側面板上的,我有快速鏈接到.sample區域。 http://ruby-doc.org/core-1.9.3/Array.html#method-i-sample – beakr 2012-02-15 01:04:02

回答

4

嘗試:

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)) 
+0

您在'array [']之前忘了'return',它從那裏開始工作,謝謝! – beakr 2012-02-15 01:35:44

+0

好點將更新答案:-)多紅寶石! – nodrog 2012-02-15 01:42:10

+0

嘿,需要習慣。你也可以添加一些分號。 :-P – beakr 2012-02-15 02:30:00

2

如果你不反對黑客內置對象的原型:

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

然後

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

給你一個隨機元素。

很多—許多人,大多數—人會說這樣一個不那麼有用的功能將不值得污染這樣的內置原型的罪過。跟隨你的幸福。

+0

這就是原型的存在,對吧? – Vigrond 2012-02-15 01:04:25

+1

@ Vigrond很好,但有修改內置類的原型對象的互操作性分支。 – Pointy 2012-02-15 03:41:45

相關問題