对于我的Javascript课程,我得到了这段代码:
for (var i in window.navigator)
{
document.getElementById('divResult').innerHTML +=
i + ': ' + window.navigator[i] + '<br />';
}
</script>
老师(在线)希望我将结果限制在最大值10。
对我来说,这是一个很大的难题。关于for..in的其他问题,我想知道这是一个可讨论的陈述。但是如何解决这个问题呢?作为i.length的数组?
答案 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];
}
}
希望这有帮助
答案 1 :(得分: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,它应该可以在数组中收集并索引它们。