zoukankan      html  css  js  c++  java
  • JavaScript数组扁平化处理

    1.ES6的flat

    const arr = [1, [2, 3, [4, 5]]]
    arr.flat(Infinity) 
    

    2.递归

    const arr = [1, [2, 3, [4, 5]]]
    
    const flat = (arr) => {
    	let result = []
      for (let i = 0, len = arr.length; i < len; i++ ) {
        Array.isArray(arr[i]) ? result = [...result, ...flat(arr[i])] : result.push(arr[i])
      }
      return result
    }
    
    flat(arr)
    

    3.reduce + 递归

    const arr = [1, [2, 3, [4, 5]]]
    
    const flat = (arr) => {
      if (!Array.isArray(arr)) return
      return arr.reduce((prev, curr) => prev.concat(Array.isArray(curr) ? flat(curr) : curr), [])
    }
    
    flat(arr)
    

    4.扩展运算符 + 迭代

    const arr = [1, [2, 3, [4, 5]]]
    
    const flat = (arr) => {
      while(arr.some((item) => Array.isArray(item))) {
      	arr = [].concat(...arr)
      }
      return arr
    }
    
    flat(arr)
    

    5.序列化 + 正则

    const arr = [1, [2, 3, [4, 5]]]
    
    const flat = (arr) => {
      return JSON.parse(`[${JSON.stringify(arr).replace(/([|])/g, '')}]`)
    }
    
    flat(arr)
    
  • 相关阅读:
    ip netns
    PPT动手动脑1
    暑假作业日总结
    暑假作业日总结
    课前测试总结
    暑假作业日总结
    大二上每日总结
    暑假作业日总结
    大二上每日总结
    暑假作业日总结
  • 原文地址:https://www.cnblogs.com/pp-yang/p/14923438.html
Copyright © 2011-2022 走看看