这是返回的一些数据的缩短版本:
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中,这是它输出的结果,你可以看到价格仍然保持原来的顺序,没有改变。
关于为什么会发生这种情况有什么想法吗?我走在正确的道路上吗?
最佳答案
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);
您正在对外部数组进行排序,而不是对内部数组进行排序。这样做会将内部数组返回给数据,但您也可以直接传递数组,因为排序是“就地”发生的
关于javascript - 对对象数组进行排序(输出数据但不按顺序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17217729/