关于数组方法sort的知识点整理

sort() 方法用就地( in-place )的算法对数组的元素进行排序,并返回数组。 sort 排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。

参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

(1)下面的代码是调用该方法没有使用参数,会按照字母的顺序对数组中的元素进行排列。

var arr = [1,100,40,25,38];
var arr1 = arr.sort();//[1,100,25,38,40]

(2)我们可以使用sort方法来自定义排序规则来实现大小的排序

var arr = [100,55,23,1,5];
arr.sort(function(a,b){
    return a > b; //这里是判断为真时交换位置,为假时不变。所以a > b是从小大小的排序,a < b从大到小的排序。
});
console.log(arr); //[1,5,23,55,100]

   这里我们说一下sort大小排序方法底层的排序规则,有人说说sort的底层排序机制和冒泡排序一致是有误解的。

var arr = [1,2,3,6,2,4,7,11,6];
arr.sort(function  (a,b) {
  console.log(a+'-------'+b);
})

 

控制台输出的是

1-------2
2-------3
3-------6
6-------2
3-------2
2-------2
6-------4
3-------4
6-------7
7-------11
11-------6
7-------6
6-------6

所以由上面的输出结果我们可以看出sort排序的机制是这样的,假如你的判断条件 a > b(由小到大排列),整个运算过程是这样的:1和2比较为假,不交换位置。2和3比较为假,不交换。3和6比较,为假不交换。6和2比较,为真交换位置。(交换位置之后会和前一位进行比较,如果为真,继续交换,再继续和前一位进行比较,直到为真。)交换之后和前一位比较,所以3和2比较,为真交换位置,2和2继续比较为假,不变。这里会回到上一次的位置,6和4比较,为真交换位置,3和4继续比较为假,继续6和7的比较为假,7和11的比较为假,11和6的比较为真,交换位置,7和6比较为真,交换位置。6和6比较为假,结束比较。

(3)我们可以使用sort方法来自定义排序规则来实现json数据的排序

var arr = [{id:1},{id:6},{id:2}];
arr.sort(function(a,b){
    return a.id > b.id;
});

(4)使用sort方法进行数组随机打乱的操作

var arr = [1,2,3,4,5,6,7,8,9,1,1,25,4578,12,8,4,78541,78,21,5];
arr.sort(function(a,b){
  return parseInt(Math.random()*2);
})

 

 

 

 

 

 

 

 

 

 

阅读更多

没有更多推荐了,返回首页