1.扁平数据化的解决方法
第一种方法
const a = [1, [2, [3, [4, 5]]]];
const flatten = (arr) => {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(flatten(arr[i]));
} else {
result.push(arr[i]);
}
}
return result;
};
console.log(flatten(a));//[1, 2, 3, 4, 5]
第二种方法(比较简单,利用的是flat)
const a = [1, [2, [3, [4, 5]]]];
const b = [6, 7, 8, 9, 10]
console.log(...(a.flat(Infinity)), ...b)//1, 2, 3, 4, 5, 6, 7, 8, 9, 10
2.防抖节流手敲代码
//防抖
let buttonBox = document.querySelector('.btn')
buttonBox.addEventListener('click', fangdou())
function fangdou() {
var timer
return function() {
clearTimeout(timer)
timer = setTimeout(() => {
console.log('防抖成功!')
}, 1000);
}
}
//节流
let buttonBox = document.querySelector('.btn')
buttonBox.addEventListener('click', jieliu())
function jieliu() {
let timer = null
return function() {
if (!timer) {
timer = setTimeout(() => {
console.log('节流成功!')
timer = null
}, 2000);
}
}
}
3.数组去重(三种)
let arr1 = ['abc', 'abcd', 'sss', '2', 'd', 't', '2', 'ss', 'f', '22', 'd', 'd', 'd', 'd'];
//第一种
let arr1 = []
for (let i = 0; i < arr.length; i++) {
if (arr1.indexOf(arr[i]) === -1) {
arr1.push(arr[i])
}
}
console.log(arr1)//['abc', 'abcd', 'sss', '2', 'd', 't', 'ss', 'f', '22']
//第二种
let arr2 = arr.sort((a, b) => {
return a - b
})
for (let i = 0; i < arr2.length; i++) {
if (arr2[i] === arr2[i + 1]) {
arr2.splice(i, 1)
i--
}
}
console.log(arr2)//['abc', 'abcd', 'sss', '2', 'd', 't', 'ss', 'f', '22']
//第三种
let arr3 = [...new Set(arr)]
console.log(arr3)//['abc', 'abcd', 'sss', '2', 'd', 't', 'ss', 'f', '22']
4.每个数组出现的次数
let arr = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6]
function fun(arr) {
let obj = {}
arr.forEach(element => {
if (obj[element]) {
obj[element]++
} else {
obj[element] = 1
}
});
return obj
}
console.log(fun(arr))//{1: 4, 2: 4, 3: 4, 4: 4, 5: 4, 6: 3}
5.冒泡排序
let arr = [3, 2, 4, 1, 5, 9, 7, 8, 6]
for (let j = 0; j < arr.length - 1; j++) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
let temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
}
console.log(arr)//[1, 2, 3, 4, 5, 6, 7, 8, 9]
6.千分位 toLocaleString()
let arr4 = 1300000000000000000
console.log(arr4.toLocaleString())//1,300,000,000,000,000,000