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之间的随机数,