来来来 手写一个数组扁平化

一分钟教会你数组扁平化

哈喽哈喽,大家好,我是你们的金樽清酒,最近在刷b站的时候看到一个标题实现数组扁平化,这让我瞬间来了兴趣,看我自己能不能手搓一个数组扁平化函数出来。嘿嘿嘿,也算是让我写出来了,也不知道代码优不优雅,让掘友来评价一下吧。

什么是数组扁平化

我们一般见到的数组都是一维的,只有一层数组。但是遇到多维数组怎么办呢?也就是数组里面嵌套数组的情况。比如:arr[[1,2,3],[234],3,4,5,[2,3,6,7]]将这个数组要变成 arr:[1,2,3,2,3,4,3,4,5,2,3,6,7],该如何去实现呢?

思路

1.创建一个新的数组 2.遍历数组 3.判断数组里面是否还是数组,不是数组就存入新创建的数组 4.是数组递归调用,这样就可以遍历出数组里面的数组 5.rerun 新数组

整体思路还是比较简单的。

代码

js 复制代码
let arr = [[1, 2, 3], [2, 3, [1, 2, 3], 5], [2, 6, 8, 3], [3, 5, 8, 2, 4]]

function setFlattening(arr) {
    let newArr = []
    function Flattening(arr) {
        let len = arr.length
        for (let i = 0; i < len; i++) {
            if (arr[i] instanceof Array) {
                Flattening(arr[i])
            }
            else {
                newArr.push(arr[i])
            }//递归调用,让里面的数组再存入数组
        }
        return newArr
    }
    return Flattening(arr)
}
console.log(setFlattening(arr));

这里我用外层函数装了一下,是将newarr私有化,放在函数里层又会不断将数组重置。在外层函数里面调用扁平化的函数。达到数组扁平化的效果。

好啦,这样一个简单的数组扁平化就实现啦。开心,这是自己写出来的。

相关推荐
Dontla1 分钟前
何时需要import css文件?怎么知道需要导入哪些css文件?为什么webpack不提示CSS导入?(导入css导入规则、css导入规范)
前端·css·webpack
小堃学编程17 分钟前
前端学习(2)—— CSS详解与使用
前端·css·学习
蓝婷儿28 分钟前
第一章:HTML基石·现实的骨架
前端·html
Watermelo61736 分钟前
前端如何应对精确数字运算?用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性
开发语言·前端·javascript·vue.js·前端框架·vue·es6
HebyH_37 分钟前
2025前端面试遇到的问题(vue+uniapp+js+css)
前端·javascript·vue.js·面试·uni-app
Clockwiseee42 分钟前
CSRF记录
前端·csrf
深圳卢先生43 分钟前
XSS 和 CSRF 有什么区别?Java Web 如何防御?
前端·xss·csrf
EndingCoder3 小时前
2025年JavaScript性能优化全攻略
开发语言·javascript·性能优化
qq_386322694 小时前
华为网路设备学习-21 IGP路由专题-路由过滤(filter-policy)
前端·网络·学习
a濯9 小时前
element plus el-table多选框跨页多选保留
javascript·vue.js