冒泡排序
let bubblingArr = [1, 2, 5, 3, 6, 7, 4, 3, 5, 7];
function fn1(bubblingArr) {
for (let t = 0; t < bubblingArr.length-1; t++) {
for (let t2 = t + 1; t2 < bubblingArr.length; t2++) {
if (bubblingArr[t] < bubblingArr[t2]) {
//降序把 >改为<
[ bubblingArr[t], bubblingArr[t2]]= [ bubblingArr[t2], bubblingArr[t]]
}
}
}
return bubblingArr;
}
console.log(fn1(bubblingArr));
去重
方法一:
let arr = [1, 2, 5, 3, 6, 7, 4, 3, 5, 7];
function fn1(arr) {
let setAr = new Set(arr);
return [...setAr];
}
console.log(fn1(arr));
方法二:
function fn1(arr, arr2) {
return arr.filter(function (v, i, arrs) {
if (!arrs.slice(0, i).includes(v)) {
return true;
}
});
}
console.log(fn1(arr));
方法三:
let arr = [1, 2, 5, 3, 6, 7, 4, 3, 5, 7];
function fn1(arr, arr2 = []) {
for (let t = 0; t < arr.length; t++) {
if (!arr2.includes(arr[t])) {
arr2.push(arr[t]);
}
}
return arr2;
}
console.log(fn1(arr));
结果:
[1, 2, 5, 3, 6, 7, 4]
计算出现的数量
方法一:
let arr = [1, 2, 5, 3, 6, 7, 4, 3, 5, 7];
function fn1(arr, arr2 = {}) {
for (let t = 0; t < arr.length; t++) {
if (arr2.hasOwnProperty(arr[t])) {
arr2[arr[t]]++;
} else {
arr2[arr[t]] = 1;
}
}
return arr2;
}
console.log(fn1(arr));
方法二:
function fn1(arr) {
return arr.reduce((pre, v, i, arrAll) => {
if (v in pre) {
pre[v]++;
} else {
pre[v] = 1;
}
return pre;
}, {});
}
console.log(fn1(arr));
数组扁平化
方式一 flat属性降为:
let arr = [1, [2, [5, 3]], [6, [7, [4, 3], 5]], 7];
function fn1(arr) {
return arr.flat(2);
}
方式二 降为并去重:
function fn1(arr, arr2 = []) {
for (let t = 0; t < arr.length; t++) {
Array.isArray(arr[t]) ? fn1(arr[t], arr2) : arr2.includes(arr[t]) ? null : arr2.push(arr[t]);
}
return arr2;
}
console.log(fn1(arr));
方式三 reduce:
function fn1(arr, arr2 = []) {
return arr.reduce((pre, v, i, arrAll) => {
return pre.concat(Array.isArray(v) ? fn1(v) : v);
}, []);
}
console.log(fn1(arr));