kil*_*les 3 javascript sorting
如何按最后一个元素的顺序对列表列表进行排序?
到目前为止,这是我最好的尝试:
var mylist = [ [1, 'c'], [3, 'a'], [5, 'b']];
mylist.sort(function(a,b){return a[1]-b[1];});
Run Code Online (Sandbox Code Playgroud)
我的呼吁sort没有效果,并mylist保持相同的顺序.
voi*_*oid 10
var mylist = [ [1, 'c'], [3, 'a'], [5, 'b']];
mylist.sort(function(a,b){return a[1].localeCompare(b[1]);});
console.log(mylist)Run Code Online (Sandbox Code Playgroud)
用于a[1].localeCompare(b[1])按升序或b[1].localeCompare(a[1])其他方式对列表进行排序.这样你就可以比较两个字符串.你试图从另一个返回的字符串中减去一个字符串NaN.
var mylist = [ [1, 'c'], [3, 'a'], [5, 'b']];
// to sort by 1st NUMBER element; minus also used for object such as date
mylist.sort(function(a,b){return a[0] - b[0];});
// to sort by 2nd STRING element with >.
// strings can be compared based on alphabetical order with > or <,
// but not with a math order operator -, which is supposed to used for comparison between number or date.
mylist.sort(function(a,b){return a[1] > b[1];});
Run Code Online (Sandbox Code Playgroud)
上面提到的例子给出了按升序排序,这里我记下我对可能需要的人的理解:按升序排序[1,9,7]到[9,7,1],我们可以想象有一个空数组[ ],然后我们将按照正确的顺序将每个元素一一放入该数组中(基于与现有元素的比较)。
function(a,b) { return b - a; }
Run Code Online (Sandbox Code Playgroud)
这里 a 是现有的,b 是我们要放入数组中的。
对于 [1,9,7],循环将是:
[]
// to put 1
[1]
// to put 9
a = 1, b = 9, b - a > 0 ==> [9,1]
// to put 7
a = 9, b = 7, b - a < 0 ==> [9,7,1]
a = 1, b = 7, b - a > 0 ==> [9,7,1]
Run Code Online (Sandbox Code Playgroud)