2013-07-24 3 views
0

Я посылаю из cities.php в JSon строку, как это:Заказать JSON объект алфавитный и возврат к объекту JSON

[{"name":"Boston","len":1,"cid":"292"},{"name":"Miami","len":1,"cid":"243"},{"name":"Washington","len":1,"cid":"36"},{"name":"Alabama","len":1,"cid":"5"},{"name":"New York","len":1,"cid":"435"}] 

я затем получить его на моем cities.html так:

var cities = {}; 
$.getJSON('http://mypage.com/json/cities.php', function(data){ 
    $.each(data, function (k, vali) { 
     cities[vali.cid] = vali.name; 
    }); 
}); 

Я беру JSON и ввод в JavaScript Object и он работает просто отлично, и выходит так:

{ 
5: 'Alabama', 
36: 'Washington', 
243: 'Miamai', 
292: 'Boston', 
435: 'New York' 
}; 

Это почти нормально, но ... Это не в алфавитном порядке?

Мне нужно сортировать это по имени, прежде чем попасть в города {} объект ...

Как это сделать?

Надеясь на помощь и заранее спасибо ...

+0

взглянут http://stackoverflow.com/ Вопросы/1129216/sorting-objects-in-a-a-a-a-field-value-in-javascript – svillamayor

+0

При просмотре этого сообщения все это показывает массив объектов [{}], но мой - это просто объект {}, и никто из них показывает, как получить его bac k к объекту после его сортировки? – Mansa

+0

данные - массив объектов – svillamayor

ответ

1

написать функцию сравнения

function compare(a,b) { 
    if (a.name < b.name) 
    return -1; 
    if (a.name > b.name) 
    return 1; 
    return 0; 
} 

затем сортировать данные

var cities = {}; 
$.getJSON('http://mypage.com/json/cities.php', function(data){ 
    data.sort(compare); 
    $.each(data, function (k, vali) { 
     cities[vali.cid] = vali.name; 
    }); 
}); 
+0

Я пробовал это решение, но не повезло ... Похоже, что $ .each его сортирует потом ... Любые идеи? – Mansa

+0

массив должен быть отсортирован правильно, возможно, проблема заключается в том, как вы используете объект city – svillamayor

Смежные вопросы