前端学习笔记(数组扁平化方法、去重方法、排序方法)
数组扁平化方法
数组扁平化:就是将多维数组变为一维数组。
递归函数
var arr = [1,2,[3,4,5,[6,7,8],9],10,[11,12]];
let result = [];
let fn = function (ary) {
for (let i = 0; i < ary.length; i++) {
let item = ary[i];
if (arr[i] instanceof Array) {
fn(item);
} else {
result.push(item);
}
}
}
fn(arr);
console.log(result)//1,2,3,4,5,6,7,8,9,10,11,12
flat
//arr.flat(Infinity) Infinity为层数,默认为一层
var arr = [1,2,[3,4,5,[6,7,8],9],10,[11,12]];
console.log(arr.flat(2))//1,2,3,4,5,6,7,8,9,10,11,12
toString
该方法得到的是一个字符串数组,如果arr数组中有空数组,不使用此方法
var arr = [1,2,[3,4,5,[6,7,8],9],10,[11,12]];
var newArr = arr.toString().split(',')
console.log(newArr);//"1","2","3","4","5","6","7","8","9","10","11","12"
数组去重方法
set
var arr = [1,2,2,3,3,3,4,4,4,4];
var newArr = Array.from(new Set(arr))
console.log(newArr);//1,2,3,4
遍历数组
var arr = [1,2,2,3,3,3,4,4,4,4];
var newArr = []
for(var i = 0; i < arr.length; i++) {
if(newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i])
}
}
console.log(newArr);//1,2,3,4
fileter + indexOf()
//如果数字不是第一次出现则被过滤
var arr = [1,2,2,3,3,3,4,4,4,4];
var newArr = []
function filterArr(array){
newArr = array.filter((item,index)=>{
return array.indexOf(item) === index
})
}
filterArr(arr)
console.log(newArr);//1,2,3,4
数组排序方法
sort
var arr = [1,3,2,7,4,9,5,6,8];
var newArr = arr.sort(function(a,b){
return a - b;
})
console.log(newArr);//1,2,3,4,5,6,7,8,9
冒泡排序
var arr = [1, 3, 2, 7, 4, 9, 5, 6, 8];
function bubbleSort(array) {
var len = array.length
for (var i = len - 1; i > 0; i--) {
for (var j = 0; j < i; j++) {
if (array[j] > array[j + 1]) {
var tmp = array[j]
array[j] = array[j + 1]
array[j + 1] = tmp
}
}
}
return array
}
var newArr = bubbleSort(arr)
console.log(newArr);//1,2,3,4,5,6,7,8,9
插入排序
var arr = [1, 3, 2, 7, 4, 9, 5, 6, 8];
function insertSort(array){
var tmp
for(var i = 1; i < array.length; i++) {
tmp = array[i]
for(var j = i; j >= 0; j--) {
if(array[j - 1] > tmp) {
array[j] = array[j - 1];
} else {
array[j] = tmp;
break;
}
}
}
return array
}
var newArr = insertSort(arr)
console.log(newArr);//1,2,3,4,5,6,7,8,9