js 二维数组的排序

来源:互联网 发布:prezi mac 破解版 编辑:程序博客网 时间:2024/04/30 03:04

var obj = new Array();

obj[0] = ["id" => 1, "price" => 1000];

obj[1] = [ "id" => 3, "price" => 500];

obj[2] = [ "id" => 2, "price" => 600];

......

// 根据Price升序排列 

obj.sort(function(x, y) {

return x["price"] - y["price"];

});

// 根据Price降序排列

obj.sort(function(x, y) {

return y["price"] - x["price"];

});


这里的比较函数的作用是什么呢?其实是数组依次将数组元素复制给x,y,比如首先将arr[0]赋给x,arr[1]赋给y,然后用x[0] - y[0],根据返回的值,如果返回的是大于0的数,那么就把数组中x放到y的后面,如果返回的是0则不变,小于0则将x放到y的前面,然后第一个排序好之后在进行下面两个的排序,直到整个数组排序完成。这是默认升序的比较函数,如果要降序排列则只需修改比较方式,改为 return y[0] - x[0] 即可,这里我们x[0]表示是按第一列进行排序,我们这里也可以按其他列进行排序。这里的排序默认就会修改arr的数组结构,所以排序完arr就是按第一列升序的数组了。