【问题标题】:why Java Script nested loop gone wrong?为什么 Javascript 嵌套循环出错了?
【发布时间】:2020-11-07 22:34:08
【问题描述】:

我有嵌套数组,我想列出属于他们父母的孩子。

但结果显然出错了,它列出了数组中的所有孩子,即使他们不属于父母。

就是想不出哪里出了问题。

var family = [ 
 { name:"parentOne",
   children:[ "John", "jack"]
},
 { name:"parentTw0",
   children: [ "jane", "joe"]
},
 { name:"parentThree",
   children: [ "Terry", "Noah"]
},
]

all = "";
childAll = "";
for (i = 0; i < family.length; i++) {

    for (j = 0; j < family[i].children.length; j++) {
        childAll += family[i].children[j] +"<br>" ;
    }

  all += family[i].name + "<br>" + " " + childAll + "<br>";
}
document.getElementById("demo").innerHTML = all;
&lt;p id="demo"&gt;&lt;/p&gt;

【问题讨论】:

  • 您需要在外部循环的开头重置childAll,而不是在循环之前。目前,您将所有子项累积在该变量中。

标签: javascript for-loop nested-loops


【解决方案1】:

它不会重置 childAll。

all = "";
childAll = "";
for (i = 0; i < family.length; i++) {
    // After one loop the childAll contains all the previous ones
    for (j = 0; j < family[i].children.length; j++) {
        childAll += family[i].children[j] +"<br>" ;
    }

  all += family[i].name + "<br>" + " " + childAll + "<br>";
}

应该是

all = "";
for (i = 0; i < family.length; i++) {
    // Reset every loop
    childAll = "";

    for (j = 0; j < family[i].children.length; j++) {
        childAll += family[i].children[j] +"<br>" ;
    }

  all += family[i].name + "<br>" + " " + childAll + "<br>";
}

【讨论】:

    【解决方案2】:

    在第一个 for 循环中创建 childAll = "",因为您希望从每个父级的空列表开始。

    【讨论】:

      猜你喜欢
      • 2014-03-04
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多