2013-03-28 6 views
0

Как отсортировать объект JSON в javascript?Сортировка объекта JSON

obj = JSON.parse(count); //count is responseText 

и

count= {"MH_YTML":"Yavatmal H.O","MH_WRDH":"Wardha H.O","MH_SWTW":"Sawantwadi H.O"} //count{key,value} 

Я хочу, чтобы отсортировать значения счетчика (Yavatmal H.O, Вардхе H.O и Sawantwadi H.O) в порядке возрастания.

+0

В объектах, порядок не имеет значения. Если порядок имеет значение, вам нужен массив. –

+0

Возможный дубликат [Сортировка json-объектов по определенному значению] (http://stackoverflow.com/questions/37416691/sorting-json-objects-by-specific-value) –

ответ

1

Сначала преобразовать этот объект в массив, где каждый элемент массива будет представлять собой пару ключей & значение из объекта, а затем сортировать этот массив с помощью пользовательской функции по значениям. Затем вы можете преобразовать его обратно в объект, но вы не можете гарантировать, что порядок объектов будет сохранен.

2

Объекты JavaScript (и их представление JSON, если есть), не имеют порядка. Они представляют собой неупорядоченные пакеты имен и ценностей собственности.

Вы можете создать массив с записями в определенном порядке.

2

Вы не можете отсортировать объект. Однако вы можете создать массив и отсортировать его. Что-то вроде этого:

var count= {"MH_YTML":"Yavatmal H.O", "MH_WRDH":"Wardha H.O", "MH_SWTW":"Sawantwadi H.O"}, 
    countArr = []; 

for (var i in count) { 
    countArr.push({key: i, val: count[i]}); 
} 
countArr.sort(function(a, b) { 
    if (a.val < b.val) return -1; 
    if (a.val > b.val) return 1; 
    return 0; 
}); 

Demo http://jsfiddle.net/dfsq/8S4aD/1/

+0

+1 для выполнения реализации (хотя на самом деле это OP), но ваш ответ «sort» неправильный. Он должен возвращать '-1',' 0' или '1', а не' true' или 'false'. –

+0

Спасибо, исправлено! – dfsq

+0

Вы внедрили сортировку * назад *, было ли это вашим намерением? –

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