JS数组排序
1.sort()方法排序:以字母顺序对数组进行排序
var array=[9, 88, 67, 24, 39, 74, 28];
array.sort((a, b) => {
return a - b //升序排列
});
console.log(array);
2.冒泡排序
var arr=[9, 88, 67, 24, 39, 74, 28];
//两层for循环分别表示当前项与第二项
for (var j = 0; j < arr.length - 1; j++) {
for (var i = 0; i < arr.length - 1 - j; i++) {
//两两比较,如果前一个比后一个大,则交换位置。
if (arr[i] > arr[i + 1]) {
var num = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = num;
}
}
}
console.log(arr);
3.选择排序:选出最小值然后放在后面,与冒泡排序类似
var arr=[9, 88, 67, 24, 39, 74, 28];
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
//如果第二项是最小值就交换,否则继续比较
if (arr[i] > arr[j]) {
var num = arr[i];
arr[i] = arr[j];
arr[j] = num;
}
}
}
console.log(arr);
4.快速排序:递归思想,两边快速的排序,冒泡排序的改进
var array = [9, 88, 67, 24, 39, 74, 28];
function quickSort(arr) {
//如果数组长度小于1,则返回数组
if (arr.length <= 1) {
return arr;
}
//定义中间值的索引
var index = Math.floor(arr.length / 2); //Math.floor()方法是向下取整,返回小于或等于一个给定数字的最大整数。
//取到中间值
var median = arr.splice(index, 1); //splice(索引,要删除的项目数量,新增) 方法向/从数组中添加/删除项目,然后返回被删除的项目。
//定义左右两个数组
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++) {
//如果元素比中间值小,则放左边,反之放右边;
if (arr[i] < median) {
left.push(arr[i]);
} else {
right.push(arr[i]); //push()方法是向数组末尾添加一个或多个新项目并返回新数组的长度
}
}
return quickSort(left).concat(median, quickSort(right));//concat()方法连接两个或多个数组,不会改变原有数组,返回一个新数组
}
console.log(quickSort(array));
JS数组去重
1.双重for循环:外层循环元素,内层循环时比较值
var arr=[10, 90, 55, 43, 55, 55, 90];
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
//判断原数组在新数组中是否有相同的元素
if(arr[i]==arr[j]){
arr.splice(j,1);//splice(索引,要删除的项目的数量,添加)方法向/从数组中添加/删除项目,然后返回被删除的项目
j--;//删除两个或三个以上的重复值;
}
}
}
console.log(arr);
2.indexOf去重
//原数组
var arr=[10, 90, 55, 43, 55, 55, 90];
//定义一个新数组,先存放不可能与数组arr重复的元素
var arr1=[];
for(var i=0;i<arr.length;i++){
//indexOf 判断指定的字符串是否存在,如果不存在,则返回-1;如果存在则返回第一次出现的索引值
if(arr1.indexOf(arr[i])>=0){
continue;//已存在就退出循环
}
else{
//不存在就push进新数组
arr1.push(arr[i]); //push()向数组末尾添加一个或多个新项目并返回新数组的长度
}
console.log(arr1);
3.Set去重
var arr=[10, 90, 55, 43, 55, 55, 90];
var num=new Set(arr);
console.log(num);