Dan*_*Dan 0 javascript arrays sorting
我有这样的数据:
var data = [
['a', 2010], ['a', 2011], ['a', 2012],
['b', 2010], ['b', 2012], ['b', 2013],
['c', 2010], ['c', 2011], ['c', 2012],['c', 2013]
]
Run Code Online (Sandbox Code Playgroud)
我希望按年对这个数组进行排序但是保持数据的顺序,所以输出将是:
var data = [
['a', 2010], ['b', 2010], ['c', 2010],
['a', 2011], ['c', 2011],
['a', 2012], ['b', 2012], ['c', 2012],
['b', 2013], ['c', 2013]
]
Run Code Online (Sandbox Code Playgroud)
如您所见,每个数据(a,b,c)并不总是包含每年的数据(如2011年的b或2013年的数据)
如果我使用sort()函数,它会按年份排序,但不按顺序排序.
var data = [
['a', 2010], ['a', 2011], ['a', 2012],
['b', 2010], ['b', 2012], ['b', 2013],
['c', 2010], ['c', 2011], ['c', 2012],['c', 2013]
]
var newData = data.sort(function(a, b) {
return a[1] - b[1]
})
console.log(newData)Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
添加表达式来处理关系:如果a[1] - b[1]为零,则应指定顺序,然后由第一个元素确定:
var data = [
['a', 2010], ['b', 2011], ['c', 2012],
['b', 2010], ['b', 2012], ['b', 2013],
['c', 2010], ['c', 2011], ['c', 2012],['c', 2013]
]
var newData = data.sort(function(a, b) {
return a[1] - b[1] || a[0].localeCompare(b[0]);
});
console.log(newData)Run Code Online (Sandbox Code Playgroud)