通过数组的方法进行数组排序
reverse()
方法颠倒数组中元素的顺序。
var fruits = ["Banana", "Orange", "Apple", "Mango"]
console.log(fruits.reverse()) // Mango,Apple,Orange,Banana
sort()
方法排序顺序可以是字母或数字,并按升序或降序排序
可以通过比较函数来得到我们想要的顺序
var arr = [8,40,9,1];
function l(a, b) {
return a - b;
}
function r(a, b) {
return b - a;
}
console.log(arr.sort(l)); // [1, 8, 9, 40]
console.log(arr.sort(r)); // [40, 9, 8, 1]
注意: 当数字是按字母顺序排列时其实是调用数组的 toString()
方法,得到字符串,然后再对得到的字符串进行排序
利用 sort()
按奇偶数进行排序
function f(a, b) { //排序函数
var a = a % 2; //获取参数a的奇偶性
var b = b % 2; //获取参数b的奇偶性
if (a == 0) return 1; //如果参数a为偶数,则排在左边
if (b == 0) return -1; //如果参数b为偶数,则排在右边
}
var a = [3,1,2,4,5,7,6,8,0,9]; //定义数组
a.sort(f); //根据数字大小由大到小进行排序
console.log(a); //返回数组[3,1,5,7,9,0,8,6,4,2]
快速排序
var arr = [3, 0, 6, 5, 20, 1, 9]
function mySort(arr) {
if(arr.length<=1){ // 数组只有一项不用进行比较,返回当前的数组
return arr
}
let left = []
let right = []
let ind = Math.floor(arr.length / 2); //取中间的索引值
let mid = arr[ind] //数组中间那项
arr.splice(ind, 1) //拿出中间项后的数组
arr.map((item) => {
if (item > mid) {
right.push(item)
} else {
left.push(item)
}
})
return mySort(left).concat(mid, mySort(right))
// 左右的数组内用相同方法进行排序,最好把这几项拼接在一起
}
console.log(mySort(arr)) // [0, 1, 3, 5, 6, 9, 20]
冒泡排序
比较相邻项的值,如果前者比后者大,交换顺序;
进行一轮比较后,最后一个值为最大的值;
进行下一轮比较,比上次少比较一项;
以此类推,比较剩下最后一项的时候,比较结束;
var arr = [8, 0, 7, 6, 5, 3, 10, 2, 1, 9]
function mySort(arr) {
for (var i = 0, len = arr.length;i < len - 1; i++) {
for (var j = 0, len1 = arr.length; j < len1 - i - 1; j++) {
var temp = null
if (arr[j] > arr[j + 1]) {
temp = arr[j + 1]
arr[j + 1] = arr[j]
arr[j] = temp
}
}
}
return arr
}
console.log(mySort(arr)) // [0, 1, 2, 3, 5, 6, 7, 8, 9, 10]
参考: js 实现数组排序
网友评论