实现数组扁平化

本文介绍了数组扁平化的概念,即如何将多层数组转换为一维数组。文章列举了四种常见方法:1) 使用JSON和split;2) 通过toString和split;3) 利用ES6的扩展运算符concat;4) 通过reduce方法和递归实现。这些方法展示了不同方式处理嵌套数组以达到扁平化效果。
摘要由CSDN通过智能技术生成

数组扁平化概念

就是将多层数组Aarray处理成一层数组,比如:

//原数组
var newArr = [[a,b],c,[d]]

//扁平化之后

var newArr = [a,b,c,d]

常见的数组扁平化方法

方法1:json和split来实现

先用JSON把数组变为字符串然后再用split分割为数组

let arr = [1,[2,3],[1,[1,2],88]]
let newArr = arr.join(',').split(',').map(Number)
console.log(newArr)  //[1, 2, 3, 1, 1, 2, 88]

方法2:toString和split来实现

先用toString把数组变为字符串然后再用split分割为数组

let arr = [1,[2,3],[1,[1,2],88]]
let newArr = arr.toString().split(',').map(Number)
console.log(newArr)  //[1, 2, 3, 1, 1, 2, 88]

方法3:ES6的扩展运算符concat

将数组内部展开,通过concat连接两个字符串的方式返回一个新的数组

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

let newArr = [12, 3, 45, [6, 7, 8]]

flatten(newArr) // [1, 2, 3, 1, 1, 2, 88]

方法4:reduce方法

遍历数组每一项,若值为数组则递归遍历,否则concat 

function flatten(arr) {  
    return arr.reduce((result, element)=> {
        return result.concat(Array.isArray(element) ? flatten(element) : element);
    }, []);
}

方法4:递归

判断获取的当前值是不是数组,是数组就递归调用 

let arr = [1,[2,3],[1,[1,2],88]]
let d = [];
let flntten = arr => {
   for (let i = 0; i < arr.length; i++) {
     if (Array.isArray(arr[i])) {
         fn(arr[i]);
          } else {
            d.push(arr[i]);
          }
        }
     }
flntten(arr)
console.log(d) // [1, 2, 3, 1, 1, 2, 88]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值