2016-05-01 66 views
0

對於我的JavaScript當然,我得到這個代碼:for,如何限制輸出?

for (var i in window.navigator) 
{ 
    document.getElementById('divResult').innerHTML += 
     i + ': ' + window.navigator[i] + '<br />'; 
} 
</script> 

老師(在線)要我將結果限制爲最大10

對我來說這是一個很大的難題。從其他問題關於...我認爲這是一個可以討論的陳述。但是,如何處理這個for..in?作爲一個數組與i.length?

+0

我很困惑。他想要前10個結果? –

+0

前10個結果會很好。 – Tichel

+0

下面的答案很好,然後 –

回答

1

只需設置一個計數器。在每次迭代中你增加計數器,當計數器達到10你只是打破了你的循環

代碼:

// Since we're going to access this div multiple times it's best to 
// store it outside of the for loop. 
var output = document.getElementById('divResult'); 

var counter = 0; 
for (var elem in window.navigator) { 
    var value = window.navigator[elem]; 

    output.innerHTML += counter + ': ' + elem + '=' + value + '<br />'; 

    ++counter; 
    if (counter == 10) { 
     break; 
    } 
} 

因爲你是新來的JavaScript,我想解釋這一點for-in

如果你想從一個數組中獲得一個特定的值,你可以通過索引來訪問它的元素。因此,例如:

var myArray = [7, 5, 6, 6]; 
for (var i = 0; i < myArray.length; ++i) { 
    var value = myArray[i]; 
} 

但是現在你通過window.navigator要循環,這種元素是不是一個數組而是一個對象。由於對象是鍵值,因此它沒有索引。那麼你如何循環呢?

讓我們想象一下window.navigator看起來是這樣的:

var navigator = { 
    myBrowser: 'Google Chrome', 
    myOtherProperty: 'otherValue', 
    AnotherProperty: 'anotherValue' 
}; 

如果我們想從我們的對象的第一個元素,我們使用

navigator.myBrowser 

navigator['myBrowser']; 

現在我們想循環遍歷對象中的所有元素。由於正常for循環使用索引,且對象沒有索引,因此我們使用for in循環。這個循環迭代了我們對象的所有屬性,併爲我們提供了關鍵。

for (var key in navigator) { 
    // Here we access a property in our object by the key given by our for loop. 
    var value = navigator[key]; 
} 

所以第一次迭代我們的關鍵是myBrowser和值是Google Chrome 下一次迭代的關鍵是myOtherProperty和價值otherValue

它通常是使用hasOwnProperty如果你通過對象循環是一個好主意:

for (var key in navigator) { 
    if (navigator.hasOwnProperty(key) { 
     var value = navigator[key]; 
    } 
} 

希望這有助於

+0

謝謝你的回答,我不知道用什麼變量來讓它在屏幕上顯示出來:counter [i]?要麼?如何或在哪裏櫃檯和我連接? – Tichel

+0

你想打印計數器還是要打印正在循環的元素? –

+0

我編輯了我的答案一點點爲你​​:) –

0

老師有一個答案回來我的for..in陣列問題:

<script> 
    var navigatorArray = []; 
for (var i in window.navigator) {    
    navigatorArray.push(window.navigator[i]); 
} 
navigatorArray.sort(); 
console.log(navigatorArray); 

var htmlString = ''; 
for (var j = 0; j < navigatorArray.length; j++) { 
    htmlString += navigatorArray[j] + '<br />'; 
} 

與.push habbit應該可以將它們收集到一個數組中並將它們編入索引。