数组的常用方法汇总

56 阅读1分钟

有空就会逐步汇总到下面:

一、数组浅拷贝、深拷贝

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]