2016-06-02 2 views
0

Так у меня есть это JSON, возвращаясь с моим сервера:вопросов добавляющих jsons к Варс

[ 
    [ 
    "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" 
    ] 
] 

Теперь то, что им хочет мой Аякс вызов поместить их в таблицу. Первые сборы и цена идут с первым ticket_desc. Каждый раз! Код, который я добавляю к табличному коду. ITs получают цену, сборы и описание в vars. Как мне это сделать?

Это, как я пытался сделать это

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; 
     } 

Однако я столкнулся с вопросами, где ticket_desc не совпадая, однако я не думал, что это будет работать!

Благодаря Сэм

+0

, какой код вы говорите Abou t sir? – guradio

+0

Единственное, что я пропустил, добавив! Одна секунда :) –

+0

Не все элементы json имеют ticket_desc, поэтому он не подходит. Попробуйте добавить все элементы, как это: [ "formatted_sum_fees", "Â £ 2,50" ], [ "ticket_desc", "Позже Сова Ticket" ] –

ответ

0

Это не совсем ясно мне, что в конечном итоге формат данных должен быть, и есть, вероятно, много различных способов обработки вашего JSON, но давайте попробуем:

Я предпочитают массив объектов, которые имеют свойство description и fee. Например:

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

Теперь, если я понимаю ваши данные правильно, порядка массива в формате JSON определяет матчи между сборами и описаниями.

Если это так, и вы можете быть уверены, нет пропущенных значений, прямолинейное решение может быть:

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] 
    }; 
}); 

Если вы хотите, чтобы сделать его короче, вы могли бы сделать:

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] 
    }); 
}; 

Если платы и описания перемешаны, вы можете отсортировать их так:

var descriptions = [], 
    fees = []; 

json.forEach(function(arr) { 
    if (arr[1] === "ticket_desc") { 
    descriptions.push(arr); 
    } else { 
    fees.push(arr) 
    }; 
}); 
Смежные вопросы