Сортировка сложного объекта JSON - PullRequest
0 голосов
/ 18 января 2010

Обращение к предыдущим вопросам о ссылках на элементы и сортировке массива JSON (javascript).См. ссылка на элемент объекта JSON (Javascript) Сортировка массива объектов JavaScript

Возможно ли отсортировать одну ветвь более сложного массива javascript, напримеркак сортировка по цене в примере ниже?

var homes = 
{
    "Agents" : [
        {
            "name" : "Bob Barker" 
        },
        {
            "name" : "Mona Mayflower" 
        } 
    ] ,
    "Listings" : [
        {
            "h_id": "3",
            "city": "Dallas",
            "state": "TX",
            "zip": "75201",
            "price": "162500" 
        },
        {
            "h_id": "4",
            "city": "Bevery Hills",
            "state": "CA",
            "zip": "90210",
            "price": "319250" 
        },
        {
            "h_id": "5",
            "city": "New York",
            "state": "NY",
            "zip": "00010",
            "price": "962500" 
        } 
    ] 
}

спасибо вам всем за помощь !!!

РЕДАКТИРОВАТЬ

Извините за путаницу.Я имел в виду Javascript как тег.(Это должно было быть очевидно по остальным вопросам) Я получил сортировку, просто возникли проблемы с итерацией по массиву.

// before sort 
alert(homes.Listings[0].price); 
// sort 
homes.Listings.sort(sort_by('price', false, parseInt));  
// after sort works: 
alert(homes.Listings[0].price); 
// iteration does not work "$ is not defined" 
$.each(homes.Listings, function(i, thisHome) { 
    alert(thisHome.price);  
});

Ответы [ 4 ]

5 голосов
/ 18 января 2010

Стандарт Array.sort выполняет функцию сравнения. Используйте это:

function makeNumericCmp(property) {
    return function (a, b) {
        return parseInt(a[property]) - parseInt(b[property]);
    };
}
homes.Listings.sort(makeNumericCmp('price'));
1 голос
/ 18 января 2010

Более или менее ответ в вопросе, на который вы разместили ссылку:

Сортировка массива объектов JavaScript

homes.Listings.sort(function (a, b)
{
    return a.price - b.price;
});
0 голосов
/ 18 января 2010

Извините за путаницу. Я имел в виду Javascript как тег. (Это должно было быть очевидно по остальному вопросу) Я получил вид работает, просто возникли проблемы с повторением через массив.

// before sort
alert(homes.Listings[0].price);
// sort
homes.Listings.sort(sort_by('price', false, parseInt)); 
// after sort works:
alert(homes.Listings[0].price);
// iteration does not work "$ is not defined"
$.each(homes.Listings, function(i, thisHome) {
    alert(thisHome.price); 
}); 
0 голосов
/ 18 января 2010

Я бы порекомендовал использовать инструментарий, например, jQuery. См. Сортировка JSON по значениям

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...