0

这是返回的一些数据的缩短版本:

var array = 
[{
    "response":
        {
            "itineraries":[
            {
                "price":
                {
                    "totalPricePerPassenger":"104"
                }
            },
            {
                "price":
                {
                    "totalPricePerPassenger":"102"
                }
            },
            {
                "price":
                {
                    "totalPricePerPassenger":"103"
                }
            }
            ]
        }
}];

我的计划是对总价返回的数据进行排序。

这是我用来排序和显示结果的代码:

function sort(a, b){
    var a_price = a.response.itineraries.price.totalPricePerPassenger();
    var b_price = b.response.itineraries.price.totalPricePerPassenger(); 
    return ((a_price < b_price) ? -1 : ((a_price > b_price) ? 1 : 0));
}

var data = array.sort(sort); 
console.log(data);

从上面的 console.log 中,这是它输出的结果,您可以看到价格仍然是原始顺序并且没有变化。

Console.log 输出

关于为什么会发生这种情况的任何想法?我在正确的轨道上吗?

4

1 回答 1

4
function sort(a, b){
    var a_price = a.price.totalPricePerPassenger;
    var b_price = b.price.totalPricePerPassenger; 
    return ((a_price < b_price) ? -1 : ((a_price > b_price) ? 1 : 0));
}

var data = array[0].response.itineraries.sort(sort); 
console.log(data);

您正在对外部数组进行排序,而不是对内部数组进行排序。这样做会将内部数组返回给数据,但您也可以直接传递数组,因为排序发生在“原地”

于 2013-06-20T15:30:14.017 回答