每天一个js算法 --- 数组扁平化

介绍

数组扁平化是指将多维数组或嵌套数组转换成一维数组的操作。在 JavaScript 中,你可以使用不同的方法来实现数组扁平化

直接上代码

Array.prototype.custom = function () {
            let flat = []
            for (let item of this) {
                if (Array.isArray(item)) {
                    flat = flat.concat(item.custom())
                } else {
                    flat.push(item)
                }
            }
            return flat
        }


let arr = [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10, 11, [12, 13, 14]], 15]
console.log(arr);
console.log(arr.custom());
  • 这段代码首先是在Array的原型上增加一个custom方法首先定义一个空数组
  • 用来保存扁平化之后的数组,先用for循环循环数组里面的数组,if判断里面用Array.isArray(item)这个方法是用来检查该item是否是一个数组,如果是的话,就调用flat.concat(item.custom()),这句里面concat方法,其实是用来拼接数组的,为什么拼接数组还要在调用一次item.custom()其实是防止数组里面还有数组,所以用了这个回调,再次检查是否item里面还有数组,然后再concat拼接数组,
  • 如果前面Array.isArray(item)不满足他是一个数组的条件,直接调用flat.push方法,把item放到数组的后面,执行完了,返回该flat数组,就可以得到我们要的扁平化的数组了

扁平化前

扁平化后

大家如果喜欢可以关注我,我每天会发布一道前端的算法题,虽然写的不是很好,希望大家也可以指出错误,共同进步,祝大家秋招顺利

#24届秋招同行攻略分享#
全部评论

相关推荐

08-24 14:45
河南大学 Java
如图所示,我在大二升大三的暑假拿到了美团的日常实习,这一路走来很不容易,所以想分享一下经验,也算是传承,因为一路走来帮助我的人也有很多。第一😇(学习路线),看黑马的视频只是一个入门,我是一直看完了springcloud。第二😇(项目),项目的话没有好坏,只有新奇与陈旧,新的项目用的人少的往往能达到让面试官眼前一亮的效果,所以没有固定的推荐,但是大家可以努力去多做几个项目,这样技术你都学会了,之后可以根据新的项目进行改造。第三😇(八股文),这个真就是跟着网站上背就行了 一定要自己整理一套自己的八股笔记,有自己的思考与理解,我理解之后即使几个月不看也能顺滑的说出来。第四😇(面试注意),面试的时候要体现自己的思考,如果你能说出来一整个问题的逻辑那很好,但是不要着急,先说百分之八十,后百分之二十说是自己思考出来的。第五😇(当你所有的都融会贯通),八股项目相结合,八股与八股相串联,问到你一个简单的问题可以扩展延伸让面试官措不及防,被你控制,这样面试官能够问你不会的问题的概率也会大大下降。等待与努力的过程是无比的焦虑与忐忑,当字节三面挂与快手二面挂的时候我已经开始摆烂了,因为双非的机会真的不多,都没把握到,最后还是美团收留了我,任何人的路径都是不可复制的,任何人的经历也是独一无二的,不要受别人影响,加油做自己。接受大家积极发问,也可以私信我哦。
永泽one:美团官网投的嘛佬,根本约面不了
大厂面试问八股多还是项目...
点赞 评论 收藏
分享
评论
4
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务