对于数组去重、排序的方法
————————————————————— 去 重 ——————————————————————
1. 双层for循环去重
var arrays = [1, 3, 5, 3, 6, 5, 8, 6, 9, 12, 8, 7, 3, 5, 2];
function arr(val){
for(var i = 0; i < val.length; i++){
for(var k = i + 1; k < val.length; k++){
if(val[i] == val[k]){
val.splice(k, 1);
k--;
}
}
}
return val;
}
var arrs = arr(arrays);
console.log('arrs==>>', arrs);
2. 通过indexOf去重
var arrays1 = [1, 3, 5, 3, 6, 5, 8, 6, 9, 12, 8, 7, 3, 5, 2];
function arr1(val){
if(!Array.isArray(val)){
console.log('type error!');
return;
}
var array = [];
for(var i = 0; i < val.length; i++){
if(array.indexOf(val[i]) === -1){
array.push(val[i]);
}
}
return array;
}
var arrs1 = arr1(arrays1);
console.log('arrs1==>>', arrs1);
3. 利用Array.from与set去重 (最简单)
function arr2(val){
if(!Array.isArray(val)){
console.log('type error!');
return;
}
return Array.from(new Set(val));
}
var arrs2 = arr2(arrays2);
console.log('arrs2==>>', arrs2);
————————————————————— 排序 —————————————————————
排序理念
var a = 1;
var b = 2;
a += b;
b = a - b;
a -= b;
1. 单向冒泡排序
function bulwSort(nums){
for(let i = 0; i < nums.length - 1; i++){
let mark = true;
for(let k = 0; k < nums.length - i - 1; k++){
if(nums[k] > nums[k + 1]){
[nums[k], nums[k + 1]] = [nums[k + 1], nums[k]];
mark = false;
}
}
if(mark){
return;
}
}
}
var arra3 = [2, 7, 9, 3, 5, 4, 6, 3, 4, 7, 8, 5, 6, 9, 2, 4, 3, 5];
var ss = bulwSort(arra3);
console.log('此方法修改原数组-->>', arra3);
console.log('不会返回新数组-->>', ss);
2. 冒泡排序
function ying(arr){
for(var i = 1; i < arr.length; i++){
for(var k = 0; k < arr.length - 1; k++){
if(arr[k] > arr[k + 1]){
arr[k] += arr[k + 1];
arr[k + 1] = arr[k] - arr[k + 1];
arr[k] -= arr[k + 1];
}
}
}
}
var arra4 = [4, 8, 45, 6, 3, 72, 6, 8, 9, 5, 2, 7, 1, 18, 24 ];
var kfkf = ying(arra4);
console.log('kfkf==>>', arra4);
—————————————— 封装一个通用的方法将数组去重排序 ———————————————
//封装方法
function sort(arr, index){
arr[index] += arr[index + 1];
arr[index + 1] = arr[index] - arr[index + 1];
arr[index] -= arr[index + 1];
}
// swit 代表切换排序开关
function Traverse(arr, swit){
for(var i = 1; i < arr.length; i++){
for(var k = 0; k < arr.length - 1; k++){
if(swit){
if(arr[k] > arr[k + 1]){
sort(arr, k);
}
}else{
if(arr[k] < arr[k + 1]){
sort(arr, k);
}
}
}
}
return arr;
}
var arrq1 = [8, 45, 6, 3, 72, 6, 8, 9, 5, 2, 7, 1, 18, 2];
var qwzx = Traverse(arrq1, true); // 如果为false 则为倒序
console.log('qwzx==>>', qwzx);
// 去重
var arrqwe = Array.from(new Set(qwzx));
console.log('arrqwe==>>', arrqwe);
——————————————————————————————————————————————