[英]Double for loop multidimensional array javascript
我使用ajax返回一些json。 這是json的樣子。
[{"optionValue":"11","optionDisplay":"Canon","preitem":`[{"preitemId":"15","preitemLabel":"Canon EF 100mm f\/2.8L Macro IS USM "},{"preitemId":"18","preitemLabel":"12412"},{"preitemId":"21","preitemLabel":"Sonydas1df Test"}]},{"optionValue":"20","optionDisplay":"Nikon","preitem":""},{"optionValue":"21","optionDisplay":"Audio & Aerial","preitem":""},{"optionValue":"23","optionDisplay":"Sony","preitem":[{"preitemId":"19","preitemLabel":"Sony 1412Test"},{"preitemId":"20","preitemLabel":"Son124124y Test"}]}]`
從你可以看到的每個選項都有一些preitems。
例如佳能擁有佳能EF 100mm,12412和Sonydas1df測試。
目標是將所有內容輸出到html頁面。
因此佳能將擁有自己的標題,其前面的項目。
這是我的代碼。
for (var i = 0; i < j.length; i++) {
for (var u = 0; u < j[i].preitem.length; u++) {
preitems += j[i].preitem[u].preitemLabel+'<br>';
}
options += '<div class="itemBlock"><b>'+ j[i].optionDisplay +'</b><input class="subcheckboxes" type="checkbox" id="checkit" value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</input><div class="" id="subcat' + j[i].optionValue + '">'+preitems+'</div></div>';
}
$("#subcat").html(options);
主要選項(佳能等)顯示得很好。 但是它不會輸出選項中唯一的pritems。 它輸出返回的整個json中的每個preitem。
我想只顯示選項中的preitems。
謝謝
你沒有重置preitems
你可能想......
for (var i = 0; i < j.length; i++) {
preitems = '';
for (var u = 0; u < j[i].preitem.length; u++) {
...
遍歷多維數據對象時,您需要更具體地識別哪些動作發生了多少次和哪里。 如果您按照rjdown的建議重置前期項目,那么您只需挖掘所有預先項目並將其傾倒到每個項目的計划就可以了。 我會嘗試這樣的事情:
for (var i = 0, lenj = j.length; i < lenj; i++) { options += '<div class="itemBlock"><b>'+ j[i].optionDisplay +'</b><input class="subcheckboxes" type="checkbox" id="checkit" value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</input><div class="" id="subcat' + j[i].optionValue + '">'; for (var u = 0, lenu = j[i].preitem.length; u < lenu; u++) { options += j[i].preitem[u].preitemLabel+'<br>'; } options += '</div></div>'; } $("#subcat").html(options);
我覺得這更具可讀性並解決了你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.