当前位置: 首页 > Web前端 > JavaScript

JS数组排序方法及详解

时间:2023-03-27 17:43:42 JavaScript

目录1.sort()方法2.冒泡排序3.插入排序例如有这样一个数组vararr=[1,3,4,10,5,8,9,2,21]使用下面的方法对其进行排序1.排序方法sort()是js中可以直接用于排序的方法。默认情况下,数组是按升序排序的,但sort()通常是通过比较字符串(ASCII)来排序,如:arr.sort();console.log(arr)//[1,10,2,21,3,4,5,8,9]//注意:sort()会改变原数组的顺序。看起来逻辑上没有问题,但绝对不是比较数值数组的最佳方式。因此,sort()方法通常需要接收一个函数作为比较的参考,如下://定义一个比较函数functioncompare(v1,v2){if(v1v2){返回1;}else{return0}}arr.sort(compare)console.log(arr)//[1,2,3,4,5,8,9,10,21]只是意味着如果v1应该在v2之前,返回一个负数;如果v1应该在v2之后,则返回一个正数;返回等于0;其实想要得到上面的结果,只需要用v1-v2得到正负0即可,简写如下:functioncompare(v1,v2){returnv1-v2;}arr.sort(比较)控制台。log(arr)//[1,2,3,4,5,8,9,10,21]如果要降序排序,只需要放v2-v1,如下:functioncompare(v1,v2){returnv2-v1;}arr.sort(compare)console.log(arr)//[21,10,9,8,5,4,3,2,1]也可以用reverse()来sortascending数组直接倒过来。arr.reverse()注意reverse()是反向方法,不能用于排序。它只能直接反转一个数组。如下图,得到的结果与排序无关。vararr1=[1,3,6,10,2]arr1.reverse();console.log(arr1)//[2,10,6,3,1]2.冒泡排序也是一种相对比较,是一种简单且常用的排序方式。它的实现原理是依次比较相邻的两个数,按顺序交换元素,直到没有可交换的,排序结束。functionarrSort(arr){for(vari=0;iarr[j+1]){//交换位置vartemp=arr[j];//设置一个暂存区arr[j]=arr[j+1];arr[j+1]=temp}}}returnarr}console.log(arrSort(arr))//[1,2,3,4,5,8,9,10,21]当然如果降序是required,把条件改成arr[j]=0&&key