2012-02-15 4 views
1

곧 출시 될 작은 Chrome 확장 프로그램을 작업하고 있습니다. 그러나이 확장 프로그램에서는 임의의 항목을 배열에서 가져 와서 화면에 표시해야합니다. 과거에는 Ruby 코드가 많았으며 화면의 배열에서 임의의 항목을 표시하는 '.sample'메서드를 기억합니다. (루비)Javascript에서 .sample에 해당하는 것은 무엇입니까?

예 :

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

출력 뭔가 같은 것을 끝낼 수 있었다 ...

>> cow 

자바 스크립트에서이 편리 배열 방법에 해당하는이 있습니까? 감사!

+1

Ruby에 익숙하지 않아 Google에서'.sample'을 찾지 못했습니다. 아무 것도 나타나지 않았습니다. 당신은 샘플이 무엇인지를 볼 수있는 방향으로 나를 가리킬 수 있습니까? 당신을 도울 수 있습니다. – Seth

+0

@Seth 여기 Rubydocs Array 클래스와 메소드가 있습니다. .sample 메서드는 사전 순으로 사이드 패널에 있으며 .sample 영역에 대한 빠른 링크가 있습니다. http://ruby-doc.org/core-1.9.3/Array.html#method-i-sample – beakr

답변

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

+0

좋은 지점은 많은 루비에 대한 답변을 업데이트합니다 :-)! – nodrog

+0

ㅎ, 익숙해 져야합니다. 세미콜론도 추가 할 수 있습니다. :-P – beakr

2

당신은 해킹하기 싫어하지 않은 경우 내장 된 객체의 프로토 타입 : 그런 다음

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

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

은 임의의 요소를 제공합니다.

많게 — 많은 사람들이 대부분 — 사람들은 그러한 유용하지 않은 기능이 그런 내장 프로토 타입을 오염시키는 죄악에 가치가 없다고 말할 것입니다. 당신의 행복을 따르십시오.

+0

그 프로토 타입은 거기에 있습니다. 맞습니까? – Vigrond

+1

@Vigrond 물론 그렇습니다. 그러나 내장 클래스의 프로토 타입 객체를 수정하는 데 상호 운용성의 영향이 있습니다. – Pointy

관련 문제