对于我的Javascript课程,我获得了以下代码:
for (var i in window.navigator)
{
document.getElementById('divResult').innerHTML +=
i + ': ' + window.navigator[i] + '<br />';
}
</script>
老师(在线)希望我将结果限制为最多10个。
对我来说,这是一个很大的难题。从其他有关for..in的问题中,我认为知道这是一个可以讨论的声明。但是,如何处理此问题呢?作为具有i.length的数组?
最佳答案
只需设置一个计数器。在每次迭代中,您增加计数器,当计数器达到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];
}
}
希望这可以帮助
关于javascript - 对于,如何限制输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36969527/