2016-08-29 4 views
-1

0과 Array.length 사이의 임의의 숫자를 가져 오려고합니다. 나는이있다 : 자바 스크립트 배열 임의로 0이났습니다

getRandom() { 
    const cars = Object.keys(this.index); 
    const randomInt = Math.floor(Math.random() * cars.length); 
    return cars[randomInt]; 
} 

나는이 몇 번 실행하고 getRandom()의 결과 중 하나에 0을 발견했다. 0이라는 내 this.index 개체에 key이 없습니다.

수학 기능이 잘못 되었습니까?

코멘트를 읽은 후 UPDATE

, 그리고 내가 getRandom()을 알고 잘못이 아니다. 나는 또한 너희들이 그것을 볼 수 있다면 reset() 기능을 가지고있다.

reset() { const cars = Object.keys(this.index); let i = cars.length; while (i--) { this.index[cars[i]] = 0; } } 

은 내가 새로운 키 0this.index 물체를 추가 해요 수 있습니까?

+1

이 함수는 잘못은 아니지만 기대치가 될 수 있습니다. 유효한 난수 값은 무엇입니까? – str

+1

'Math.random()'은'0'을 반환 할 수 있습니다. 그래서이'Math.floor (Math.random() * cars.length);는'0'이 될 수 있습니다. – Craicerjack

+1

'cars'는 배열입니다. 비어 있지 않으면 인덱스 0에 항목이 있습니다. 그 항목 (0 자체가 아닌)은'this.index'의 유효한 키 여야합니다. – Thilo

답변

-1

나는 당신이 무엇을보고 있는지 궁금해하지만, 여기에 모두 컨텍스트가 부족하므로, 내 눈으로 문제를보기 위해 약간의 예제를 만들었고 설명 된 문제가없는 것 같습니다. .

Try it for yourself here - 어쩌면 데이터를 실행 중인지 문제가있는 것입니까?