首页 > 其他分享 >手写一个JS函数,实现数组深度扁平化

手写一个JS函数,实现数组深度扁平化

时间:2022-11-10 00:24:22浏览次数:42  
标签:el arr 扁平化 res JS let 数组 newArr 手写

要求:把数组arr=[12,34,[122,324],[222,[333]];扁平化

思路:创建一个新数组,循环原数组判断每一项是否是数组是的话先递归,在调用const或push方法,不是直接const或push。

方法一:使用数组的concat方法(concat可以传入数组或值,合并到一个新的数组中。)

let arr = [12,34,[122,324],[222,[333]]]
function flatten(arr) {
    let res = [];                         
    arr.forEach(el=>{
        if(el instanceof Array){
            let newArr = flatten(el);
            res = res.concat(newArr);
        }else{
            res = res.concat(el);
        }
    })
    return res
}
let newArr = flatten(arr);
console.log(newArr);// [ 12, 34, 122, 324, 222, 333 ]

方法二:使用数组的push方法

let arr = [12,34,[122,324],[222,[333]]]
function flatten(arr) {
    let res = [];                         
    arr.forEach(el=>{
        if(el instanceof Array){
            let newArr = flatten(el);
            res = res.push(newArr);
        }else{
            res = res.push(el);
        }
    })
    return res
}
let newArr = flatten(arr);
console.log(newArr);// [ 12, 34, 122, 324, 222, 333 ]

 

标签:el,arr,扁平化,res,JS,let,数组,newArr,手写
From: https://www.cnblogs.com/zimengxiyu/p/16875689.html

相关文章

  • 001[Js修炼]手写深拷贝
    /**//编写一个深度克隆函数,满足以下需求(此题考察面较广,注意细节)functiondeepClone(obj){}//deepClone函数测试效果constobjA={name:'jack',birthday:......
  • [Element UI 2.x] el-upload组件的部分事件属性传参在.jsx文件中失效的问题
    在之前的开发工作经历中,基本会首选Antd、ant-design-vue、Vant做为前端工程的UI库。今天在处理一个现有项目时,其UI库使用的是ElementUI(2.15.10)。在以JSX形式编写一个具......
  • json数据传递参数
    1.类型json数组json对象(POJO)json数组(POJO) 2.接收请求中的json数据的步骤:(1)添加json数据转换相关坐标  (2)  (3)  注意:@EnableWebMvc注解功能强大,该注解整合......
  • js获取字符串中含有某个字符个数
    得到字符串含有某个字符的个数/***获取字符串中某字符的个数*@paramstr字符串*@paramcharchar为某字符*@returnsString*/constgetCharCount=(......
  • 推荐一款个人感觉比较好用的 JSON 格式化 chrome 插件-JSON-handle
    ​​插件下载地址​​,记得打开VPN。JSON数据展示效果如下图,个人感觉还不错,就是加载起来可能会稍微慢一点,但并不影响我对它的好感。可以展开,收起。右上角有个小方框,点一下......
  • js 闭包和promise
    闭包概述:闭包就是在函数内部返回一个函数,内部函数可以对外部函数的属性和方法进行引用,外部的属性和方法不会被js垃圾回收机制所回收这个结构就称为闭包函数的生命周......
  • 手写本地缓存实战2—— 打造正规军,构建通用本地缓存框架
    大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。村......
  • EXTJS 中Grid控件的常用代码
    1、定义列varcm=newExtgridColumnModel([{header:编号,dataIndex:id},{header:名称,dataIndex:name},{header:描述,dataIndex:descn}......
  • 2022-11-09 js 秒数转换成时分
    注:本文转载于http://t.csdn.cn/AHK3yfunctionformatSeconds(value){varsecondTime=parseInt(value);//秒varminuteTime=0;//分......
  • 手写map和filter
    mapfunctionmyMap(arr,callback){if(Array.isArray(arr)){if(arr.length===0)returnarr;constbrr=[];for(letitemofarr){brr.pu......