javascript - 对对象数组进行排序(输出数据但不按顺序)

标签 javascript arrays sorting object

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

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 output

关于为什么会发生这种情况有什么想法吗?我走在正确的道路上吗?

最佳答案

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/

相关文章:

java - 按降序对整数数组进行排序并将其与相应的字符串数组相关联

javascript - 使用无法正确显示的动态数据显示谷歌图表

javascript - 元胞自动机的相邻单元格计数

python - numpy数组被切片两次

excel - 绝对值排序范围

c++ - 排序运算符在 C++ 中不起作用

javascript - 在 chrome 和 mozilla 中用 relative 和 grid 显示不同的元素值

javascript - 如何访问 Angular 模板中的对象属性名称?

javascript - 排序最新日期时间

c# - 如何以通用方式连接数组?