对于我的 Javascript 类(class),我得到了以下代码:
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
循环。该循环遍历对象的所有属性并为我们提供 key 。
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 - 对于in,如何限制输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36969527/