数组快速排序
function quiktSort(arr){
let left =[];
let right=[];
if(arr.length<1){
return arr;
}
// 求数组的长度的一半
const index = Math.floor(arr.length/2);
// 截取,取数组的最中间的一个元素
const point = arr.splice(index,1);
for(var i=0,len=arr.length;i<len;i++){
// 拿数组的每一个元素和最中间的这个元素比较,比中间元素小,
// 就放入左边的数组,比中间元素大,就放入右边的数组。
if(arr[i]<point){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
// 把左边的数组和截取的那个元素(因为比截取的那个元素大的元素
// 和小的元素都放入左边或右边的数组了,和截取的这个元素相等的
// 元素还没有放入数组),以及右边的数组,拼接起来。
return quickSort(left).concat(point,quickSort(right));//回调函数
}
数组去重
// 如果数组的第i项,第一次出现的位置不是在下标i,那么这个元素就是重复出现
function arrNoRepeat1(arr){
let new_arr = [];
for(let i = 0,len = arr.length;i < len;i ++){
// 如果数组的第i项,第一次出现的位置不是在下标i,那么这个元素就是重复出现了。
if(arr.indexOf(arr[i]) === i){
new_arr.push(arr[i]);
}
}
// console.log(new_arr);
return new_arr;
}
console.log(arrNoRepeat1([1,11,12,22,12,44,3,22,4,1,5,3]))
// ES6新增构造函数Set,Set中的元素是唯一的
let arr = [4,1,2,2,3,2,1,4,4];
// set 天然去重
let set = new Set(arr);
console.log(arr);
console.log(set);
console.log(...set);
console.log([...set]);
// 遍历旧数组,然后再新数组中查找对应元素的下标,找不到对应的元素,
// 返回-1,说明新数组中没有该元素,则放入新数组。
let arr_new = [];
for(let i = 0,len = arr.length;i < len;i ++){
//indexOf(元素) 查找对应元素的下标,找到返回找到的元素,找不到返回-1
if(arr_new.indexOf(arr[i]) === -1){
arr_new.push(arr[i]);
}
}
console.log(arr_new);