核心: sort()方法的使用
sort()
- 该方法会先使用toString()将数组的每一项转换为字符串进行比较
- 如果要比较数值,必须通过一个函数作为参数来调用,此函数接收两个参数:a,b分别代表每次排序比较时的两个数组项,看返回值:
- 如果返回值大于 0,则位置互换,再和前面的数组项依次比较,确定当前项的位置
- 如果返回值小于 0,则位置不变。
// 升序
function rise(arr) {
arr.sort((a, b) => {
return a - b // 如果返回值大于0,证明a > b ,位置互换,b在前,升序
})
return arr
}
const arr = [8, 4, 2, 3, 1, 7, 6, 5, 0, 9];
console.log(rise(arr));
// 降序
function drop(arr) {
arr.sort((a, b) => { // a是第一个数,b是第二个数
return b - a // 如果返回值大于0,证明b > a ,位置互换,b在前,降序
})
return arr
}
const arr = [8, 4, 2, 3, 1, 7, 6, 5, 0, 9];
console.log(drop(arr));
// 随机
function random(arr) {
return arr.sort(function() {
return Math.random() - 0.5 // 通过随机产生0到1的数,然后判断是否大于0.5从而影响排序,产生随机性的效果。结果并不均匀,并不完全随机
})
}
const arr = [8, 4, 2, 3, 1, 7, 6, 5, 0, 9];
console.log(random(arr));
// 随机2
function random(arr){
var len = arr.length;
for(var i = 0; i < len - 1; i++){
var idx = Math.floor(Math.random() * (len - i));
var temp = arr[idx];
arr[idx] = arr[len - i - 1];
arr[len - i -1] = temp;
}
return arr;
}
const arr = [8, 4, 2, 3, 1, 7, 6, 5, 0, 9];
console.log(random2(arr));