在之前的文章中我们介绍了几种检测数组元素是否全部符合指定条件的方法,感兴趣的可以点击链接进行查阅→《JS数组学习之判断数组元素是不是都满足给定条件》。这次我们来聊聊数组排序,介绍一下在JavaScript中如何对数组元素进行排序的方法。

今天本文的主要内容是:对数组元素按照一定规则进行排序。废话不多说,下面就给大家就是3种数组元素排序方法。

方法1:利用for循环

说到利用for循环进行数组排序,就想到了冒泡排序,下面看看实现代码:

//每轮依次比较相邻两个数的大小,后面比前面小则交换
var b=0//设置用来调换位置的值
var a=[1,9,33,2,5,34,23,98,14]//冒泡排序
for(var i=0;i<a.length;i++){
	for(var j=0;j<a.length;j++){
		if(a[j]>a[j+1]){
			b=a[j]
			a[j]=a[j+1]
			a[j+1]=b
		}
	}
}
console.log(a)

输出结果:

1.png

上面代码是从小到大排序,如果想要从大到小排序,可以将if语句的判断添加修改一下:

if(a[j]>a[j+1]){
...
}

2.png

方法2:利用sort() 方法

sort() 方法能够根据一定条件对数组元素进行排序。

语法:array.sort([函数])

sort() 方法两种情况:

  • 当方法的参数为空时,则按字母顺序对数组中的元素进行从小到大排序。

所谓的字母顺序,实际上是根据字母在字符编码表中的顺序进行排列的,每个字符在字符表中都有一个唯一的编号。

var a=['e','a','f','b','c','h','g','z','i']
a.sort();  //按字母顺序对元素进行排序
console.log(a);

输出结果:

3.png

如果元素不是字符串,则 sort() 方法试图把数组元素都转换成字符串,以便进行比较。需要注意当数字是按字母顺序排列时”40″将排在”5″前面。

var a=[1,2,40,4,5,50,6,7,8]
a.sort();  //按字母顺序对元素进行排序
console.log(a);

输出结果:

4.png

此时就需要通过一个函数作为参数来调用,即下面的第二种情况:

  • 当参数为一个函数时,将按函数指定的规则排序数组元素。

var a=[1,2,40,4,5,50,6,7,8]
a.sort(function(a,b){
     return a-b;//从小到大排序
     //return b-a;//从大到小排序
});
console.log(a);

输出结果:

5.png

当数组元素的前缀为数字而后缀为字符串时,如果希望这些元素能按数字大小进行排序,此时需对匿名函数中的参数作一些变通处理。

var a=['345px','23px','10px','1000px'];
a.sort(function(a,b){
     return parseInt(a)-parseInt(b);;//从小到大排序
     //return parseInt(b)-parseInt(a);//从大到小排序
});
console.log(a);

输出结果:

6.png

方法3:利用reverse() 方法

如何不想将数组元素从小到大(或从大到小)进行排序,而是想倒序排序呢?那么可以使用reverse() 方法。

reverse() 方法能够颠倒数组元素的排列顺序,该方法不需要参数,直接 数组对象.reverse()即可。

var a=['345px','23px','10px','1000px'];
a.reverse();
console.log(a);

输出结果:

7.png

说明:

sort()和reverse() 方法都是在原数组基础上进行操作,而不是创建新的数组;因此会改变原数组。

好了,就说到这里了,有需要的可以看:javascript视频教程

以上就是JS中怎么按照一定规则对数组元素进行排序的详细内容,更多请关注亿码酷站其它相关文章!


JS中怎么按照一定规则对数组元素进行排序
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除

下载声明:
  • 本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压;
  • 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。
  • 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版!
  • 版权声明:
  • 下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。
  • 免责声明:
  • 您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!