js 怎么把字符串组 按顺序a-z,A-Z,0-9,的顺序排列

JavaScript06

js 怎么把字符串组 按顺序a-z,A-Z,0-9,的顺序排列,第1张

如下:

">

<html> <head>  <meta http-equiv="Content-Type" content="text/html charset=gbk">  <title>Untitled Document</title>  <script>   window.onload=function(){    var a="1我a2你b3他d"   //要排序的字符串a    var b=a.split("")       //分割字符串a为数组b    b.sort()              //数组b升序排序(系统自带的方法)    var c=b.join("")        //把数组b每个元素连接成字符串c    alert(c)              //输出最终排序好的字符串   }  </script> </head> <body> </body>

</html>

排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。

反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。

首先,将数组的name的值作为元素创建一个新数组,然后进行排序,然后按照新数组的值对应找到旧数组的对应元素,并将其添加至一个新创建的数组,旧数组的此元素删除。代码如下:let oldArr = [{name:"张三"},{name:"李四"},{name:"王五"}]let newArr1 = new Array(oldArr.length)for(i = 0 i <oldArr.lengthi++){newArr1[i] = oldArr[i].name}newArr1.sort()let newArr2 = new Array()for(i=0i<newArr1.lengthi++){for(j=0j<oldArr.lengthj++){if(newArr1[i] == oldArr[j].name){newArr2.push(oldArr.splice(j,1))}}}// 最后这个newArr2就是你要的排序后结果// 注意:原来的oldArr此时应该成为一个空数组了

对字符串数组排序很简单,只需要直接用sort()即可,这是它的默认排序方式(按字符顺序或者说按字符的ASCII码顺序):

var a = ["666", "123", "4", "88", "1111"]

alert(a.sort()) //1111,123,4,666,88

如果是数值数组,也直接使用sort()的话,也是按字符方式来排序的,需要给sort提供一个自定义的排序规则函数才能实现按数值大小排序:

var a = [666, 123, 4, 88, 1111]

alert(a.sort()) //1111,123,4,666,88

alert(a.sort(function(a, b){return a-b})) //4, 88, 123, 666, 1111

如果是对象数组,要根据对象中一个共同的属性值来排序,则情况要复杂得多,需要定义一个比较函数来实现:

var a = [{"name":"张三", "age":34}, {"name":"李四", "age":28}, {"name":"王五", "age":45}, {"name":"赵六", "age":37}]

a.sort(function(n){

return function(o,p){

var a,b

if(typeof o==="object"&&typeof p==="object"&&o&&p){

a=o[n]

b=p[n]

if(a===b)return 0

if(typeof a===typeof b)return a<b?-1:1

return typeof a<typeof b?-1:1

}else{

throw "error"

}

}

}("age")) //排序结果此略