for,如何限制输出?

时间:2016-05-01 17:16:42

标签: javascript

对于我的Javascript课程,我得到了这段代码:

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

老师(在线)希望我将结果限制在最大值10。

对我来说,这是一个很大的难题。关于for..in的其他问题,我想知道这是一个可讨论的陈述。但是如何解决这个问题呢?作为i.length的数组?

2 个答案:

答案 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,它应该可以在数组中收集并索引它们。