最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - How to sort multidimensional array in javascript - Stack Overflow

programmeradmin0浏览0评论

I have an array as follows

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

I want to sort the array alphabetically based on the third item of array i.e arry[n][2]

How to do this.

I have an array as follows

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

I want to sort the array alphabetically based on the third item of array i.e arry[n][2]

How to do this.

Share Improve this question edited Jan 7, 2014 at 8:14 n92 asked Jan 2, 2014 at 12:07 n92n92 7,60228 gold badges96 silver badges131 bronze badges 3
  • So, its already sorted in this case? – thefourtheye Commented Jan 2, 2014 at 12:10
  • arry.sort(function (a, b) { return a[2] - b[2]; }); – Givi Commented Jan 2, 2014 at 12:12
  • It's already sorted in this case, but check my answer. I changed city names. – Ali Gajani Commented Jan 2, 2014 at 12:18
Add a comment  | 

4 Answers 4

Reset to default 10

http://jsfiddle.net/VPrAr/

You can use the arry.sort(). The default is alphanumeric and ascending.

So it would be:

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);

Array.prototype.sort function expects a function as a parameter, which accepts two parameters and returns any of -1, 0 or 1.

I am a very big fan of functional programming, so I came up with this. This offers flexibility.

  1. You can sort based on any element
  2. You can even reverse the order of sorting
  3. You can customize, how the objects have to be compared.

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]);
        }
    }
}

Thats it. Now, call the sort function like this

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

Use a sort function for example:

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

try this

//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];
 });
发布评论

评论列表(0)

  1. 暂无评论