数组数组:无限循环

array of arrays: infinite loop

本文关键字:数组 无限循环      更新时间:2023-09-26

我使用javascript&jQuery。出于某种原因,我的内部For循环没有退出。计数器继续攀升超过数组长度,并继续添加元素,直到浏览器崩溃。在Firefox调试器中逐步执行时,groupList[i].length显示正确的值。

你知道为什么内部循环从不返回false吗?

var $j = jQuery.noConflict();
// array of arrays
var groupList = [];
groupList[groupList.length] = ["Japan", "Honda", "Toyota", "Nissan"];
groupList[groupList.length] = ["America", "Ford", "Dodge", "Chevrolet"];
// loop that creates a radio button from the first element in each array
for (var i = 0; i < groupList.length; ++i) {
    $j("#groupBtns").append("<label class='"btn btn-primary active'" id='"btn" + 
        groupList[i][0] + "'"><input type='"radio'">" + groupList[i][0] + "</label>");
}
// function to add second group of radio button for remaining elements in selected array
function groupClick(group) {
    for (var i = 0; i < groupList.length; ++i) {
        if (group == groupList[i][0]) {
            // -- this is the infinite loop -- //
            for (var o = 1; 0 < groupList[i].length; ++o) {
                $j("#subGroupBtns").append("<label id='"btn" + groupList[i][o] + 
                    "'" class='"btn btn-primary'"><input type='"radio'">" + 
                    groupList[i][o] + "</label>");
            }
        }
    }
}
// event listener
$j("#groupBtns").on('click', function (e) {
    groupClick($j(e.target).text())
});

注意:数组的长度并不总是相同的,所以我不能为循环使用静态终止符。

您有一个打字错误:

for (var o = 1; 0 < groupList[i].length; ++o) {

您正在执行0 < groupList[i].length,如果存在长度,则始终返回true。

应为:

for (var o = 1; o < groupList[i].length; ++o) {