按 2 列对多维数组进行排序 - JavaScript

DiD*_*DiD 1 javascript arrays sorting string multidimensional-array

我有一个二维数组,其中包含不同的元素。我想根据两个不同的标准对数组进行排序。一个是字符串,另一个是整数。这是一个例子。

var arr = [
    ['ABC', 87, 'WHAT'], 
    ['ABC', 34, 'ARE'], 
    ['DEF', 13, 'YOU'], 
    ['ABC', 18, 'DOING'], 
    ['ABC', 34, 'DOING'],
    ['DEF', 24, 'TODAY']
];
Run Code Online (Sandbox Code Playgroud)

我想先按第一个元素排序,然后按第二个元素排序。

rob*_*bmj 5

这相当简单:

如果字符串相等,则通过比较整数值来打破平局,否则返回结果localeCompare

var arr = [
  ['ABC', 87, 'WHAT'],
  ['ABC', 34, 'ARE'],
  ['DEF', 13, 'YOU'],
  ['ABC', 18, 'DOING'],
  ['ABC', 34, 'DOING'],
  ['DEF', 24, 'TODAY'],
  ['ABA', 18, 'TODAY'],
  ['ABA', 11, 'TODAY']
];

function doSort(ascending) {
    ascending = typeof ascending == 'undefined' || ascending == true;
    return function(a, b) {
       var ret = a[0].localeCompare(b[0]) || a[1] - b[1];
       return ascending ? ret : -ret;
    };
}

// sort ascending
arr.sort(doSort());
// sort descending
arr.sort(doSort(false));
Run Code Online (Sandbox Code Playgroud)

小提琴