前端日常开发常用功能系列之数组扁平

这是前端日常开发常用功能这个系列文章的第一篇,该系列是日常开发中一些常用的功能的再总结、再提炼,以防止遗忘,便于日后复习。该系列预计包含以下内容: 防抖、节流、去重、拷贝、最值、扁平、偏函数、柯里、惰性函数、递归、乱序、排序、相等、注入、上传、下载、截图。。。

 

数组扁平就是将多维数组转化为一维数组;

方法一,利用数组原型的toString方法,但是只能用于数组元素都是数值时

const arr = [1, 3, [1, 4], [2, [5, 65, [8, 9]]]];

const flattenArr = arr.toString().split(',');

// ["1", "3", "1", "4", "2", "5", "65", "8", "9"]

方法二,循环递归

const ar = [1, 3, [1, 4], ['a', [5, 65, ['b', 9]]]];

    const flatten = arr => {
        let newArr = [];
        for(let i = 0; i < arr.length; i++) {
            if(Array.isArray(arr[i])) {
                newArr = newArr.concat(flatten(arr[i]));
            } else {
                newArr.push(arr[i]);
            }
        }
        return newArr;
    };

flatten(ar); // [1, 3, 1, 4, "a", 5, 65, "b", 9]

方法三,使用es6展开符...

const ar = [1, 3, [1, 4], ['a', [5, 65, ['b', 9]]]];

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

    flatten(ar); // [1, 3, 1, 4, "a", 5, 65, "b", 9]

方法四,使用reduce简化数组

const ar = [1, 3, [1, 4], ['a', [5, 65, ['b', 9]]]];

    const flatten = arr => {
        return arr.reduce((pre, cur) => {
            if(Array.isArray(cur)) return pre.concat(flatten(cur));
            return pre.concat(cur);
        }, []);
    };

    flatten(ar); // [1, 3, 1, 4, "a", 5, 65, "b", 9]

数组扁平化的思路基本就是循环遍历,递归进行扁平化。

转载于:https://www.cnblogs.com/innooo/p/10438791.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值