2017-09-15 5 views
-1

私はJavaScriptで割り当てをして乱数を取得し、問題のない乱数を表示します。その乱数に一致する配列から同じ数の項目を表示するには、乱数に配列を添付する必要があります。私の問題は、奇数個の配列項目が正しく表示されています。たとえば、私の乱数が7の場合、私は配列から6つのアイテムしか取得しません。これを修正するにはどうすればよいですか?ここでJavaScript内の乱数と配列

は私のコードです:

var randomNum=Math.floor((Math.random()*9) + 6); 

var amenities = ['Pool', 'Bowling Alley', 'Indoor Pool', 'Jacuzzi', 'Private Jacuzzi', 'Rooftop Hot tub', 'Indoor Putt Putt', 'Golf Driving Range', 
'Live Music', 'Restaurant', 'Bar', 'Adult Entertainment', 'Free WiFi', 'Stocked Room Bar', 'Unlimited Room Calling']  

var list = document.getElementsByTagName('ul')[1]; 

for (var i = 1; i < randomNum ; i++){ 
var newItemLast = document.createElement('li');      
var newTextLast = document.createTextNode(amentities[i]);     
newItemLast.appendChild(newTextLast);        
list.appendChild(newItemLast); 



var newItemFirst = document.createElement('li');     
var newTextFirst = document.createTextNode(amentities[i]);     
newItemFirst.appendChild(newTextFirst);        
list.insertBefore(newItemFirst, list.firstChild); 
i++; 
} 

var listItems = document.querySelectorAll('li'); 


var heading = document.querySelector('h2');       
var headingText = heading.firstChild.nodeValue;      
//var totalItems = listItems.length;         
var newHeading = headingText + '<span> ' + randomNum + '</span>'; 
heading.innerHTML = newHeading; 
+2

。 – Carcigenicate

+3

また、「乱数に配列を付ける必要があります」という意味を明確にすることもできます。 – Carcigenicate

+0

あなたの配列を反復している方法で、おそらく何かが間違っています。フィドルが助けになるでしょう – Vatsal

答えて

1

@Barmarが言うように - あなたはarray.slice(0、RANDOM_NUMBER)を使用することができますが、そうあなたが起こっていただきました、私はストレートとしてサンプルをした見ることができますjavascript for loopは、乱数と同じ数の項目に対して配列を反復処理し、<li>を表示リストに追加します。

配列のインデックスがゼロであるため、forループは、生成した乱数と同じ数の配列項目を与えることに注意してください。これは、あなたの指定した例では、7のランダムな番号であることを意味します - 次は7個のアイテムを0でインデックス付けします - したがって、配列からのアイテム0,1,2,3,4,5,6です。他の言葉 - インデックス0で始まりインデックス6で終わる7つのアイテム。

また、教訓の瞬間として、配列アイテムの表示を可能にする2番目の関数に乱数を渡しています。これは完全に可能です他の関数に値を渡すのに慣れているだけで、このタスクは実際には2つ(乱数の生成とそのサブセットへの配列のスライス)であることが分かります。あなたは問題のあるコードを示していないので確かに言うことは不可能

var array = ['item 1 ', 'item 2', 'item 3 ', 'item 4', 'item 5 ', 'item 6', 'item 7 ', 'item 8', 'item 9', 'item 10']; 
 
    
 
function setNum() { 
 
    var ranNum = Math.floor(Math.random() * 10); 
 
    document.getElementById('displayNum').textContent="The random Number chosen = " + ranNum; 
 
    setDisplay(ranNum) 
 
} 
 
    
 
function setDisplay(num) { 
 
    document.getElementById('displayList').innerHTML = ''; 
 
    for(i = 0; i < num; i++){ 
 
    document.getElementById('displayList').innerHTML +='<li>' + array[i]+ '</li>'; 
 
    } 
 
}
<button type="button" onclick="setNum()">Click Me</button> 
 
<hr/> 
 
<p id ="displayNum"></p> 
 
<ul id="displayList"></ul>

+0

私のコードのコピーをアップロードしました。 – kabobie