javascript - 按特定顺序对多维数组进行排序
问题描述
我一直在思考如何以我想要的方式在 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'
除此之外,如果这个排序系统不区分大小写,那就太好了……也许有人有解决这种复杂数组排序的方法?提前致谢!
解决方案
您可以尝试 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())
推荐阅读
- angular - 如何通过单击 ag-grid 中的列标题来获取列名
- nested - Rails 有两个嵌套属性,“posts”和“issues”上的“comments” Not Saving Rollback
- cplex - 如何在 CPLEX OPL 中编写平均约束?
- c# - 讲述人未按预期读取 TextBlock 中的文本。仅在选定的 TextBox 中
- python - 是否可以在 python 中的函数上使用模式匹配?比如,一个可以响应多个调用的函数
- php - 如何更新数据库中的 json 字段 laravel?
- kafka-consumer-api - 具有相同组 ID kafka 的同一应用程序的多个实例
- r - 使用 facet_wrap 时如何标准化刻度线
- python - lines+=line / TypeError:只能将str(不是“字节”)连接到str
- xslt - 如何在每个循环中选择前一个兄弟姐妹?