2016-06-02 17 views
0

Also ich habe diese json kommt zurück von meinem Server anhängen:Fragen jsons zu Vars

[ 
    [ 
    "formatted_sum_fees", 
    "£6.00" 
    ], 
    [ 
    "formatted_price", 
    "£60.00" 
    ], 
    [ 
    "formatted_sum_fees", 
    "£8.00" 
    ], 
    [ 
    "formatted_price", 
    "£120.00" 
    ], 
    [ 
    "formatted_price", 
    "£240.00" 
    ], 
    [ 
    "formatted_sum_fees", 
    "£3.20" 
    ], 
    [ 
    "formatted_sum_fees", 
    "£2.86" 
    ], 
    [ 
    "formatted_sum_fees", 
    "£2.50" 
    ], 
    [ 
    "ticket_desc", 
    "Later Owl Ticket" 
    ], 
    [ 
    "ticket_desc", 
    "Later Owl Ticket+Collector Ticket &#64 extra £4.95 per ticket" 
    ], 
    [ 
    "ticket_desc", 
    "Later Owl + Chance For VIP Upgrade" 
    ], 
    [ 
    "ticket_desc", 
    "VIP Ticket" 
    ], 
    [ 
    "ticket_desc", 
    "VIP Ticket + Collector Ticket &#64 extra £4.95 per ticket" 
    ], 
    [ 
    "ticket_desc", 
    "Skydeck Package" 
    ], 
    [ 
    "ticket_desc", 
    "5 Person Skydeck Table" 
    ], 
    [ 
    "ticket_desc", 
    "7 Person Skydeck Table" 
    ], 
    [ 
    "ticket_desc", 
    "10 Person Skydeck Table" 
    ] 
] 

Nun, was im wollen ist mein Ajax-Aufruf setzen diese in eine Tabelle. Die ersten Gebühren und Preise gehen mit dem ersten ticket_desc. Jedes und jedes Mal! Der Code Ich habe den Anhang an den Tabellencode. ITs bekommen den Preis, die Gebühren und die Beschreibung in vars. Wie gehe ich dabei vor? Diese

ist, wie ich versuchte ich, dies zu tun

success: function(json) { 
    for (var i = 0; i < json.length; i++) { 
     var section = json[i][0]; 
     if (section == "ticket_desc") { 
     var ticket = json[i][1]; 
     debugger; 
     } 

jedoch in Probleme lief, wo die ticket_desc besteht nicht passend, aber i did not denken, dass es funktionieren würde!

Dank Sam

+0

welcher Code sprechen Sie abou Herr? – guradio

+0

Derjenige, den ich total vermisst habe! Eine Sekunde :) –

+0

Nicht alle Elemente von json haben ticket_desc, deshalb stimmt es nicht überein. Versuchen Sie es alle Elemente, wie das Hinzufügen von: [ "formatted_sum_fees", "Â £ 2.50" ], [ "ticket_desc", "Später Owl Ticket" ], –

Antwort

0

Es ist nicht ganz klar zu mir, was die mögliche Datenformat sein soll, und es gibt wahrscheinlich viele verschiedene Möglichkeiten Ihrer json Verarbeitung, aber wir versuchen:

Ich würde bevorzugen ein Array von Objekten, die eine description und fee Eigenschaft haben. Zum Beispiel:

var ticket = { 
    description: "Later Owl Ticket", 
    fee: "&Acirc;&pound;6.00" 
}; 

Nun, wenn ich Ihre Daten richtig zu verstehen, die Ordnung des Arrays in der json bestimmt die Übereinstimmungen zwischen Gebühren und Beschreibungen.

Wenn dies der Fall ist, und Sie können keine fehlenden Werte sicher, dass es sein werden, eine einfache Lösung sein könnte:

var nrOfTickets = json.length/2; 
var fees = json.slice(0, nrOfTickets);   // First half 
var descriptions = json.slice(nrOfTickets); // Second half 

var tickets = descriptions.map(function(descrArr, index) { 
    var feeArr = fees[index]; 
    return { 
    description: descrArr[1], 
    fee: feeArr[1] 
    }; 
}); 

Wenn Sie es kürzer machen möchten, können Sie tun:

var tickets = []; 
for (var i = 0, l = json.length/2; i < l; i += 1) { 
    tickets.push({ 
    fee: json[i][1], 
    description: json[i+l][1] 
    }); 
}; 

Wenn die Gebühren und Beschreibungen verschlüsselt sind, können Sie sie wie so sortieren:

var descriptions = [], 
    fees = []; 

json.forEach(function(arr) { 
    if (arr[1] === "ticket_desc") { 
    descriptions.push(arr); 
    } else { 
    fees.push(arr) 
    }; 
});