一,數組去重數組
利用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
}
複製代碼