我必须根据数字对字符串数组进行排序。
示例
["1.READ","10.CREATE","3.sfg","2.dfd","12.dqwe"];
期望的结果
["1.READ","2.dfd","3.sfg","10.CREATE","12.dqwe"];
我的代码
var arr = ["1.READ","10.CREATE","3.sfg","2.dfd","12.dqwe"];
var arr2 = arr.map( a => a.split('.').map( n => +n+100000 ).join('.') ).sort().map( a => a.split('.').map( n => +n-100000 ).join('.') );
console.log(arr);
console.log(arr2);
答案 0 :(得分:3)
您可以split
将第一个元素转换为Number
var arr = ["1.READ", "10.CREATE", "3.sfg", "2.dfd", "12.dqwe"];
var arr2 = arr.sort((a, b) => {
return Number(a.split(".")[0]) - Number(b.split(".")[0]);
});
console.log(arr2);
上面的代码也会对第一个变量进行排序。如果您只想对arr2
进行排序,您可以:
var arr = ["1.READ", "10.CREATE", "3.sfg", "2.dfd", "12.dqwe"];
var arr2 = [...arr]; //Spread the array so that it will not affect the original
arr2.sort((a, b) => {
return Number(a.split(".")[0]) - Number(b.split(".")[0]);
});
console.log(arr);
console.log(arr2);
答案 1 :(得分:3)
你可以拆分并只采取第一部分。然后取三角形进行排序。
var array = ["1.READ", "10.CREATE", "3.sfg", "2.dfd", "12.dqwe"];
array.sort((a, b) => a.split(".")[0] - b.split(".")[0]);
console.log(array);
答案 2 :(得分:1)
这是:
var arr = ["1.READ","10.CREATE","3.sfg","2.dfd","12.dqwe"];
arr.sort(function(a, b) {
return a.split('.')[0] - b.split('.')[0];
});
console.log(arr)
// ["1.READ", "2.dfd", "3.sfg", "10.CREATE", "12.dqwe"]
这个答案基于内置数组排序功能,具有可自定义的比较逻辑。 请查看此内容以获取更多详细信息:Javascript Array Sort
干杯,