sort()方法的排序规则与实际应用

    var arr = [6,2,3,7,6,5,10]
    	arr.sort()
    	console.log(arr)//[10, 2, 3, 5, 6, 6, 7]
    	//从控制台看出,数组会按照字符的Unicode进行排序,这并不是我们想要的结果

sort()给我们提供了一个接口:sort(function(a,b){})

       //升序
       arr.sort(function(a,b){
          return a - b
       })
       console.log(arr)//[2, 3, 5, 6, 6, 7, 10]这才是我们想要的

sort()是如何实现排序,我们把a,b与arr控制台输出一下

    arr.sort(function(a,b){
    console.log(a,b,arr)
          return a - b
       })
	/* 
	 6 2 (7) [6, 2, 3, 7, 6, 5, 10]
	 6 3 (7) [2, 6, 3, 7, 6, 5, 10]
	 2 3 (7) [2, 6, 6, 7, 6, 5, 10]
	 6 7 (7) [2, 3, 6, 7, 6, 5, 10]
	 7 6 (7) [2, 3, 6, 7, 6, 5, 10]
	 6 6 (7) [2, 3, 6, 7, 7, 5, 10]
	 7 5 (7) [2, 3, 6, 6, 7, 5, 10]
	 6 5 (7) [2, 3, 6, 6, 7, 7, 10]
	 6 5 (7) [2, 3, 6, 6, 6, 7, 10]
	 3 5 (7) [2, 3, 6, 6, 6, 7, 10]
	 7 10 (7) [2, 3, 5, 6, 6, 7, 10]
	 */
	 //  从控制台的数据看出,sort()方法是使用的冒泡和插入两种方式结合进行排序的(算法自己去琢磨,小编也不会 = =)

sort()在实际应用中处理后台返回的对象数组,按照某个值进行排序


   var data = [
           {name:'aaa',age:18},
           {name:'bbb',age:45},
           {name:'ccc',age:30},
       ]

       data.sort(function(a,b){
       	return a.age - b.age
       })
       console.log(data)
       /*
	0:{name: "aaa", age: 18}
	1:{name: "ccc", age: 30}
	2:{name: "bbb", age: 45}
	*/
	//这就得到我们想要的结果啦

某面试题,打乱数组元素的顺序

   var ranArr = [1,2,3,4,5,6,7]
       ranArr.sort(function(){
            return Math.random() - 0.5;
       })
  //利用 Math.random()返回0到1之间的随机数,

猜你喜欢

转载自blog.csdn.net/weixin_41786576/article/details/83580924