js数组拍平(数组扁平化)的五种方式

Posted 走开,不要让我犯错误

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js数组拍平(数组扁平化)的五种方式相关的知识,希望对你有一定的参考价值。

1.数组拍平也称数组扁平化,就是将数组里面的数组打开,最后合并为一个数组

2.实现

var arr = [1,2,[3,4,5,[6,7,8],9],10,[11,12]];

a:递归实现

function fn(arr){
    let arr1 = [] arr.forEach((val)
=>{ if(val instanceof Array){ arr1 = arr1.concat(fn(val)) }else{ arr1.push(val) } }) return arr1 }

b:reduce实现

function fn(arr){
    return arr.reduce((prev,cur)=>{
        return prev.concat(Array.isArray(cur)?fn(cur):cur)
    },[])
}

c:flat 

参数为层数(默认一层)

arr.flat(Infinity)

 d:扩展运算符

function fn(arr){
    let arr1 = [];
    let bStop = true;
    arr.forEach((val)=>{
        if(Array.isArray(val)){
            arr1.push(...val);
            bStop = false
        }else{
            arr1.push(val)
        }
    })
    if(bStop){
        return arr1;
    }
    return fn(arr1)
}

e:toString

let arr1 = arr.toString().split(‘,‘).map((val)=>{
            return parseInt(val)
        })
        console.log(arr1)

 f:apply

function flatten(arr){
     while(arr.some(item => Array.isArray(item))){
           arr =  [].concat.apply([],arr);
     }
      return arr;
}

 


以上是关于js数组拍平(数组扁平化)的五种方式的主要内容,如果未能解决你的问题,请参考以下文章

数组扁平化的五种方法

js数组的五种迭代遍历方式 every filter forEach map some

JS中数组去重的五种方法

数组去重的五种方法

day_5:求范围内的随机正负整数,拍平数组,拍平数组(按需拍平,纯js算法版)-返回一个 十六进制 的 随机颜色

TP5模板赋值的五种方法