如何在javascript中对多维数组进行排序

时间:2014-01-02 12:07:01

标签: javascript jquery sorting multidimensional-array

我有一个数组如下

var arry = [ [1, "Convention Hall", "Mumbai", 10, "XYZ Company"], 
             [2, "Auditorium", "Delhi", 10, "ABC Company"], 
             [3, "CenterHall", "Bangalore", 10, "ZZZ Company"],
            ....
            ]

我想根据数组的第三项按字母顺序对数组进行排序,即 arry [n] [2]

如何做到这一点。

4 个答案:

答案 0 :(得分:3)

http://jsfiddle.net/VPrAr/

enter image description here

您可以使用arry.sort()。默认值为字母数字和升序。

所以它会是:

var arry = [ [1, "Convention Hall", "Dangalore", 10, "XYZ Company"], 
             [2, "Auditorium", "Belhi", 10, "ABC Company"], 
             [3, "CenterHall", "Aumbai", 10, "ZZZ Company"],
            ];
var x =arry.sort(function(a,b){ return a[2] > b[2] ? 1 : -1; });
alert(x);

答案 1 :(得分:2)

Array.prototype.sort函数需要一个函数作为参数,它接受两个参数并返回-1, 0 or 1中的任何一个。

我是函数式编程的忠实粉丝,所以我想出了这个。这提供了灵活性。

  1. 您可以根据任何元素进行排序
  2. 您甚至可以颠倒排序顺序
  3. 您可以自定义如何比较对象。

  4. function basicComparator(first, second) {
        if (first === second) {
            return 0;
        } else if (first < second) {
            return -1;
        } else {
            return 1;
        }
    }
    
    function compareNthElements(n, comparatorFunction, reverse) {
        return function(first, second) {
            if (reverse === true) {
                return comparatorFunction(second[n], first[n]);
            } else {
                return comparatorFunction(first[n], second[n]);
            }
        }
    }
    

    多数民众赞成。现在,像这样调用sort函数

    arry.sort(compareNthElements(1, basicComparator, true));  // Sorts first field and in reverse
    arry.sort(compareNthElements(2, basicComparator));        // Sorts second field
    

答案 2 :(得分:1)

使用排序功能,例如:

arry.sort(function(a,b){
   return a[2] > b[2] ? 1 : -1;
});

答案 3 :(得分:0)

试试这个

//WITH FIRST COLUMN
     arry = arry.sort(function(a,b) {
      return a[0] > b[0];
    });


//WITH SECOND COLUMN
arry = arry.sort(function(a,b) {
 return a[1] > b[1];
 });


//WITH THIRD COLUMN
//and you want this code below
arry = arry.sort(function(a,b) {
 return a[2] > b[2];
 });