Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中对多维数组排序_Javascript_Jquery_Sorting_Multidimensional Array - Fatal编程技术网

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

如何在javascript中对多维数组排序,javascript,jquery,sorting,multidimensional-array,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"], .... ] 我想根据数组的第三项按字母顺

我有一个数组,如下所示

var arry = [ [1, "Convention Hall", "Mumbai", 10, "XYZ Company"], 
             [2, "Auditorium", "Delhi", 10, "ABC Company"], 
             [3, "CenterHall", "Bangalore", 10, "ZZZ Company"],
            ....
            ]
我想根据数组的第三项按字母顺序对数组排序,即arry[n][2]

如何做到这一点。

试试这个

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

您可以使用
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);

使用排序函数,例如:

arry.sort(function(a,b){
   return a[2] > b[2] ? 1 : -1;
});
函数需要一个函数作为参数,它接受两个参数并返回
-1、0或1
中的任意一个

我非常喜欢函数式编程,所以我想到了这个。这提供了灵活性

  • 您可以根据任何元素进行排序
  • 您甚至可以颠倒排序顺序
  • 您可以自定义对象的比较方式


  • 因此,在本例中它已经被排序了?
    arry.sort(函数(a,b){返回a[2]-b[2];})在本例中已排序,但请检查我的答案。我更改了城市名称。由于排序是一种变异方法,所以不需要将其分配给新变量,那么
    a[2]===b[2]
    呢?为什么不简单地
    返回first-second?@Givi它可能无法对所有数据类型正常工作。例如,如果要比较的两个元素都是对象,它将返回
    NaN
    。因此,我使函数更灵活,同时传递比较器函数:)
    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]);
            }
        }
    }
    
    arry.sort(compareNthElements(1, basicComparator, true));  // Sorts first field and in reverse
    arry.sort(compareNthElements(2, basicComparator));        // Sorts second field