簡體   English   中英

jQuery,如何遍歷復雜數組

[英]jquery, how to loop through complex array

我做了一個ajax,並返回了一個深度為5級的多維數組,每個級別都有很多項目。 我想遍歷每個級別並創建HTML語法。 完成所有第5級后。 我將加入所有語法並將整個列表附加到HTML中。

現在,我擔心如何對其進行循環更正。

數組結構如下

var array = [object, object, object, object]
            |0 object level 1
              |1 object level 2
                |0 object level 3
                  |0 object level 4
                    |0 object level 5
            |1 object
            |2 object 
            |3 object 

這是一個簡化的示例數據

var test = [
    {
        "someid":"25",
        "level1":[
            {
                "name":"john doe",
            }
            "level2": [
            {
                "order_quantity":"1",
                "order_price":"12.00",
                "level3":[
                {
                    "addon_price":"2.00"
                }]
            }]
        }]
    }
]

我嘗試使用javascript進行循環,但是在第二級之后,它變得非常難看且難以跟蹤。

一級循環

for(i=0; i<array.length;i++)

二級循環

for(n=0; n<array[i].level1.length;n++)

第三級循環

for(y=0;y<array[i].level2[n].level3.length;y++) 

我認為這不是正確的方法。

像這樣遍歷數組的正確方法是什么

我也有jquery。 但不確定如何使用$ .each來執行此操作。

因此歡迎使用jquery解決方案。

您可以使用遞歸方法。

 var array = [[[1, 2, 3, 4], [[5, 6]]], [7, 8], [9, 10], [11, 12]]; array.forEach(function iter(a) { if (Array.isArray(a)) { a.forEach(iter); return; } console.log(a); }); 

或使用硬編碼解決方案

 var test = [{ someid: "25", level1: [{ name: "john doe", level2: [{ order_quantity: "1", order_price: "12.00", level3: [{ addon_price: "2.00" }] }] }] }]; test.forEach(function (a) { a.level1.forEach(function (b) { b.level2.forEach(function (c) { c.level3.forEach(function (d) { console.log(d.addon_price); }); }); }); }); 

如果子級別遵循相同的構建規則,則可以使用更動態的解決方案。

 var test = [{ someid: "25", level1: [{ name: "john doe", level2: [{ order_quantity: "1", order_price: "12.00", level3: [{ addon_price: "2.00" }] }] }] }]; test.forEach(function iter(level) { return function (a) { if (Array.isArray(a['level' + level])) { a['level' + level].forEach(iter(level + 1)); return; } Object.keys(a).forEach(function (k) { console.log(a[k]); }); } }(1)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM