【问题标题】:Sort Multidimensional array in descending order按降序对多维数组进行排序
【发布时间】:2016-08-03 01:48:29
【问题描述】:

我有一个当前按第一个值排序的数组:

[ [ 'a', 3 ],
  [ 'c', 3 ],
  [ 'd', 1 ],
  [ 'e', 2 ],
  [ 'f', 1 ],
  [ 'g', 1 ],
  [ 'i', 7 ],
  [ 'l', 3 ],
  [ 'o', 2 ],
  [ 'p', 2 ],
  [ 'r', 2 ],
  [ 's', 3 ],
  [ 't', 1 ],
  [ 'u', 2 ],
  [ 'x', 1 ] ]

我想按数字降序排列得到:

[ [ 'i', 7 ],
  [ 'a', 3 ],
  [ 'c', 3 ],
  [ 'l', 3 ],
  [ 's', 3 ],
  [ 'e', 2 ],
  [ 'o', 2 ] ......]

【问题讨论】:

标签: javascript arrays sorting multidimensional-array


【解决方案1】:

使用 Array.sort([compareFunction])

function comparator(a, b) {    
  if (a[1] > b[1]) return -1
  if (a[1] < b[1]) return 1
  return 0
}

myArray = myArray.sort(comparator)

编辑评论:

这是一个 jslint 显示它的实际操作: https://jsfiddle.net/49ed0Lj4/1/

【讨论】:

  • 结果为:[ [ 'i', 7 ], [ 'l', 3 ], [ 's', 3 ], [ 'c', 3 ], [ 'a', 3],['e',2],['o',2],['p',2],['r',2],['u',2],['g',1] , [ 'f', 1 ], ['d', 1 ], ['t', 1 ], ['x', 1 ] ]
【解决方案2】:

The sort method in Array

var arr = [
    ['a', 3],
    ['c', 3],
    ['d', 1],
    ['e', 2],
    ['f', 1],
    ['g', 1],
    ['i', 7],
    ['l', 3],
    ['o', 2],
    ['p', 2],
    ['r', 2],
    ['s', 3],
    ['t', 1],
    ['u', 2],
    ['x', 1]
];

arr.sort(function(a, b) {
    return b[1] - a[1]
})

也许您需要同时按英文字母和数字排序。您可以更改回调函数来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-06
    • 2015-08-23
    • 2014-02-16
    • 2017-05-16
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多