一道js排序问题求大神回答
需求:先数字再是字母加数字,有字母前缀的,按字母排序
如:arr['1','20','a3','c9','b1','19','11']
排序后期望:['1','11','19','20','a3','b1','c9']
一道js排序问题求大神回答
需求:先数字再是字母加数字,有字母前缀的,按字母排序
如:arr['1','20','a3','c9','b1','19','11']
排序后期望:['1','11','19','20','a3','b1','c9']
sec1:
var array = ['1','20','a3','c9','b1','19','11'];
var temp = 0;
for (var i = 0; i < array.length; i++)
{
for (var j = 0; j < array.length - i; j++)
{
if (array[j] > array[j + 1])
{
temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
console.log(array);
sec2:
var arr = ['1', '1a', '20','a3','c9','b1','19','11'], arrNums = [], arrLets = [] ;
var checkNum = new RegExp('^[0-9]*$');
for( var i = 0; i < arr.length; i++){
var item = arr[i];
if(checkNum .test(item)){
arrNums.push(item)
}else{
arrLets.push(item);
}
}
arrNums = arrNums.sort();
arrLets = arrLets.sort();
arr = [].concat(arrNums, arrLets);
不知道可不可以用函数式编程库、
一般涉及到计算比较多的为了考虑计算性能问题、我们会引入underscore.js
函数式编程有一个方法_.sortBy(list, iteratee, [context])
具体的规则自然可以自己定义一个、然后return出新的数组就是了、
不知道他怎么计算的、反正比自己写的快
var arr=['1','20','a3','c9','b1','19','11']
ES5:
var arrs=arr.sort(function(x,y){
if(!isNaN(x)&&isNaN(y)){
return false
}else {
return x>y
}
})
@小秦 感谢提醒,楼主采纳他的
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
前两天有人在这儿给的答案,那个答案咋不见了?