一,数组去重数组
利用indexOfbash
function unqiue(ary) {
var newArr = [];
for (var i = 0 ; i < ary.length ; i++){
var cur = ary[i];
if (newArr.indexOf(cur) === -1) {
newArr.push(cur);
}
}
return newArr;
};
var res = unqiue([3,5,5,6,3,2,1,3,2]);
console.log(res);
复制代码
利用对象方法去重ui
function unique(ary) {
var obj = {};
var newArr = [];
for (let i = 0; i < ary.length; i++) {
const arr = ary[i];
if(!obj[arr]){
newArr.push(arr);
obj[arr] = true;
}
}
obj = null;
return newArr;
}
var res = unique([3,45,6,3,45]);
console.log(res);
复制代码
双for循环去重 避免数组塌陷问题,j++后利用j--.spa
for (let i = 0; i < ary.length; i++) {
const aryE = ary[i];
for (let j = i + 1; j < ary.length; j++) {
if(aryE === ary[j]){
ary.splice(j,1);
j--;
}
}
复制代码
二,数组排序3d
1.冒泡排序code
主要是当前项和后一项比较,若是当前项大于后一项,就交换位置,在比较中,数组一共须要比较arr.length - 1轮,每一轮比较都会获得一个最大值,其中在两轮比较中,已经有两个最大值,因此不须要比较,所以,以下大妈cdn
function bubbleSort(ary) {
// 外层循环控制比较轮数 i的值标记几轮
for (var i = 0; i < ary.length - 1; i++) {
// 内层循环控制比较次数
for (var j = 0; j < ary.length - 1 - i; j++) {
if (ary[j] > ary[j + 1]) {
var temp = ary[j];
ary[j] = ary[j + 1];
ary[j + 1] = temp;
}
}
}
return ary;
}
console.log(bubbleSort(arr))
复制代码
2.选择排序对象
每轮在未排序的序列中,找到最小元素,每轮比较完,就让最小元素和起始的那一项交换位置blog
function select_sort(ary) {
// 外层循环负责指定比较的起始位置
for (var i = 0; i < ary.length - 1; i++) {
// minIdx每次最小值索引位置
var minIdx = i
for (var j = i + 1; j < ary.length; j++) {
if (ary[j] < ary[minIdx]) {
minIdx = j
}
}
// 比较完每轮 让最小值arr[minIdx]和起始位置那一项arr[i]交换位置
var temp = ary[i]
ary[i] = ary[minIdx]
ary[minIdx] = temp
}
return ary
}
复制代码