如何按列值对二维数组进行排序?

如何按列值对二维数组进行排序?

任何人都可以帮助我在JavaScript中对二维数组进行排序吗?

它将具有以下格式的数据:

[12, AAA][58, BBB][28, CCC][18, DDD]

排序时应该如下所示:

[12, AAA][18, DDD][28, CCC][58, BBB]

基本上,按第一列排序。


心有法竹
浏览 1058回答 3
3回答

一只斗牛犬

这很简单:var&nbsp;a&nbsp;=&nbsp;[[12,&nbsp;'AAA'],&nbsp;[58,&nbsp;'BBB'],&nbsp;[28,&nbsp;'CCC'],[18,&nbsp;'DDD']];a.sort(sortFunction);function&nbsp;sortFunction(a,&nbsp;b)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a[0]&nbsp;===&nbsp;b[0])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(a[0]&nbsp;<&nbsp;b[0])&nbsp;?&nbsp;-1&nbsp;:&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;}}我邀请您阅读文档。如果要按第二列排序,可以执行以下操作:a.sort(compareSecondColumn);function&nbsp;compareSecondColumn(a,&nbsp;b)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a[1]&nbsp;===&nbsp;b[1])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(a[1]&nbsp;<&nbsp;b[1])&nbsp;?&nbsp;-1&nbsp;:&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;}}

千巷猫影

最好的方法是使用以下内容,因为第一列中可能存在重复值。var&nbsp;arr&nbsp;=&nbsp;[[12,&nbsp;'AAA'],&nbsp;[12,&nbsp;'BBB'],&nbsp;[12,&nbsp;'CCC'],[28,&nbsp;'DDD'],&nbsp;[18,&nbsp;'CCC'],[12,&nbsp;'DDD'],[18,&nbsp;'CCC'],[28,&nbsp;'DDD'],[28,&nbsp;'DDD'],[58,&nbsp;'BBB'],[68,&nbsp;'BBB'],[78,&nbsp;'BBB']];arr.sort(function(a,b)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;a[0]-b[0]});

繁华开满天机

试试这个//WITH FIRST COLUMNarr = arr.sort(function(a,b) {&nbsp; &nbsp; return a[0] - b[0];});//WITH SECOND COLUMNarr = arr.sort(function(a,b) {&nbsp; &nbsp; return a[1] - b[1];});注意:原始答案使用大于(>)而不是减号( - ),这是注释所指的不正确。
打开App,查看更多内容
随时随地看视频慕课网APP