这是返回的一些数据的缩短版本:
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中,这是它输出的结果,因为您可以看到价格仍然是原始顺序且没有变化。
关于为什么会发生这种情况的任何想法?我是在正确的轨道上吗?
答案 0 :(得分: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);
您正在排序外部数组,而不是内部数组。这样做会将内部数组返回给数据,但你也可以直接传递数组,因为排序是“就地”发生的