首页 > 解决方案 > 按特定顺序对多维数组进行排序

问题描述

我一直在思考如何以我想要的方式在 Javascript 中对数组进行排序,尝试了各种方法,但我无法提出解决方案,所以我决定在这里问......所以简而言之,我的数组看起来就这么复杂:

var englishvoc = new Array();

englishvoc[0] = new Array();
englishvoc[0][0] = "beautiful";
englishvoc[0][1] = new Array();
englishvoc[0][1][0] = 0;
englishvoc[0][2] = 2;

englishvoc[1] = new Array();
englishvoc[1][0] = "nice";
englishvoc[1][1] = new Array();
englishvoc[1][1][0] = 0;
englishvoc[1][2] = 2;

englishvoc[2] = new Array();
englishvoc[2][0] = "get";
englishvoc[2][1] = new Array();
englishvoc[2][1][0] = 9;
englishvoc[2][1][1] = 7;
englishvoc[2][1][2] = 2;
englishvoc[2][2] = 1;

我希望这个数组排序的方式就是按其中的英文单词,这样它们的顺序就变成了“beautiful”、“get”、“nice”,同时移动了数组的整个第一个维度。结果应该是:

alert(englishvoc) //Returns: '"beautiful",0,2,"get",9,7,2,1,"nice",0,2'

除此之外,如果这个排序系统不区分大小写,那就太好了……也许有人有解决这种复杂数组排序的方法?提前致谢!

标签: javascriptarrayssorting

解决方案


您可以尝试 sort() 和 localeCompare()

var englishvoc = new Array();

englishvoc[0] = new Array();
englishvoc[0][0] = "beautiful";
englishvoc[0][1] = new Array();
englishvoc[0][1][0] = 0;
englishvoc[0][2] = 2;

englishvoc[2] = new Array();
englishvoc[2][0] = "nice";
englishvoc[2][1] = new Array();
englishvoc[2][1][0] = 0;
englishvoc[2][2] = 2;

englishvoc[7] = new Array();
englishvoc[7][0] = "get";
englishvoc[7][1] = new Array();
englishvoc[7][1][0] = 9;
englishvoc[7][1][1] = 7;
englishvoc[7][1][2] = 2;
englishvoc[7][2] = 1;



englishvoc.sort((a,b)=>a[0].localeCompare(b[0]))

console.log(englishvoc.join())


推荐阅读