有空就会逐步汇总到下面:
一、数组浅拷贝、深拷贝
1.浅拷贝有哪些:concat、slice、[...array]
2.深拷贝有哪些:
(1)暴力暴力暴力深拷贝:JSON.parse(JSON.stringify(array)),注意,不能深拷贝函数
(2)递归:
const deepClone = (obj)=>{
if(typeof obj != 'object') return
let newobj = obj instanceof Array ? [] : {}
for(let k in obj){
if(obj.hasOwnProperty(k)){
newobj[k] = typeof obj[k] == 'object' ? deepClone(obj[k]): obj[k]
}
}
return newobj
}
二、reduce使用场景: 基本介绍:array.reduce((preValue, curValue, curIndex) => { }, init)
1.累加和:
let test = [1,2,3]
let sum = test.reduce((v1, v2)=>{v1 + v2}, 0) //结果:6
2.二维数组扁平化为一维数组
let a = [[1,2],[3,4]]
let b = a.reduce((v1, v2)=>{v1.concat(v2)},[]) // [1,2,3,4]
3.遍历统计数组元素
let a = [1, 2, 1, 4, 6, 2]
let b = a.reduce((v1, v2)=>{
v1[v2] = (v1[v2] || 0) + 1
return v1
}, {}) //结果[1:2, 2:2, 4:1, 6:1]