JavaScript数字数组怎么按数字大小排序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript数字数组怎么按数字大小排序?相关的知识,希望对你有一定的参考价值。
先写上我们的示例代码,定义了一个数组arr,数组包括有几个字母,不按顺序的,要对数组进行排序,直接调用sort方法。再加上一些输出语句,console.log是指在浏览器的调试控制台里输出内容。
运行页面,我们在控制台里看下结果,如图,数组调用sort方法后,就按字母的升序做好排序了。
修改下代码,把数组内容从字符串改成数字,然后再调用sort方法。
修改后,运行页面,再看下结果。
数组排序都是按字符串来排序的,而不管数组内容是数字还是字符串。
修改下sort排序方法,把刚才定义的方法名传进来。
运行页面,可以看到现在的数组就是按数字从小到大排序的。
好,javascript中的数字数组排序非常简单,JS本身提供了内置的排序方法,直接调用就可以了。
1.var arr = [1, 20, 49, 32, 43, 69];
2.arr.sort();
3.console.log(arr); // [1, 20, 32, 43, 49, 69]
参考技术AJavascript中的数字数组排序方法:
var arr = [1, 20, 49, 32, 43, 69];
arr.sort();
console.log(arr); // [1, 20, 32, 43, 49, 69]
还有一种更加灵活的写法:
arr.sort(function(a, b)
return a - b;
);
console.log(arr); // [1, 20, 32, 43, 49, 69]
如果想倒序也很简单,交换下return中a、b的位置就可以了:
arr.sort(function(a, b)
return b - a;
);
console.log(arr); // [69, 49, 43, 32, 20, 1]
JavaScript数字数组按数字大小排序代码如下:
<html>
<head>
<title>数组对象的sort()方法</title>
<script language="javascript" type="text/javascript">
<!--
var arr = [39,11,3,9,1,77];
document.write("原数组元素为:" + arr.toString() + "<br>");
arr.sort();
document.write("按字符编码排序:" + arr.toString() + "<br>");
//正序排序
function ascOrder(x,y)
if (x>y)
return 1;
else
return -1;
//倒序排序
function descOrder(x,y)
if (x>y)
return -1;
else
return 1;
arr.sort(ascOrder);
document.write("按数字正序排序:" + arr.toString() + "<br>");
arr.sort(descOrder);
document.write("按数字倒序排序:" + arr.toString() + "<br>");
-->
</script>
</head>
<body>
</body>
</html>
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。
为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。
js数组内数字按大小排序实现函数
正常冒泡排序:
function evlabc(a) { //排序大小 var i = j = t = 0; for (i = 0; i < a.length; i++) { for (j = 0; j < a.length; j++) { if (a[i] < a[j]) {// 相邻元素两两对比 t = a[i]; a[i] = a[j]; a[j] = t; } console.log(‘i:‘ + i + ‘ j:‘ + j + ‘ 当前数组为:‘ + a); } } return a; } var arr = [5, 100, 6, 3, -12]; evlabc(arr);
冒泡排序优化版:
function sort(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=0;j<arr.length-i-1;j++){ if(arr[j]>arr[j+1]){// 相邻元素两两对比 var hand = arr[j]; arr[j]=arr[j+1]; arr[j+1]=hand; } console.log(‘i:‘ + i + ‘ j:‘ + j + ‘ 当前数组为:‘ + arr); } } return arr; } var ar = [5,100,6,3,-12]; sort(ar);
由此可以看出,将相邻的两个数依次相比较,大数向后放,小数向前移。即是位置交换实现小数在前,大数在后。经过10次比较后,最终实现重排。
如果从大到小排序的话,则将if(arr[j]>arr[j+1])改为if(arr[j]<arr[j+1])即可
极简sort版:
function sortNumber(a,b){//升序 return a - b } var arr = [5, 100, 6, 3, -12]; arr.sort(sortNumber);
关于sort()函数 http://www.w3school.com.cn/jsref/jsref_sort.asp
sort函数没有使用参数时,将按字母顺序对数组中的元素进行排序。如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
以上是关于JavaScript数字数组怎么按数字大小排序?的主要内容,如果未能解决你的问题,请参考以下文章