首页 > 其他分享 >js实现 flat 扁平函数

js实现 flat 扁平函数

时间:2023-02-08 11:59:07浏览次数:41  
标签:flat arr return level js 扁平 result console

flat 函数第一个参数为需要扁平化的数组,第二个参数为需要打平的层数,默认不传则打平一层,传入几则代表打平几层。

测试用例

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

console.log(flat(arr));
// [1, 2, 3, [4,[5]]]

console.log(flat(arr, 1));
// [1, 2, 3, [4,[5]]]

console.log(flat(arr, 2));
// [1, 2, 3, 4,[5]]

console.log(flat(arr, 3));
// [1, 2, 3, 4, 5]

js 实现

// 方法一

function flat(arr, level) {
    if (!level || level === 1) {
        return arr.reduce((a, b) => {
            return a.concat(b);
        }, []);
    } else {
        return arr.reduce((a, b) => {
            if (Array.isArray(b) && level > 0) {
                return a.concat(flat(b, level--));
            } else {
                return a.concat(b);
            }
        }, []);
    }
}

// 方法二
function flat(arr, depth = 1) {
    let result = [];
    for (let i = 0; i < arr.length; i++) {
        if (Array.isArray(arr[i]) && depth > 0) {
            result.push(...flat(arr[i], depth - 1));
        } else {
            result.push(arr[i]);
        }
    }
    return result;
}

 

标签:flat,arr,return,level,js,扁平,result,console
From: https://www.cnblogs.com/beileixinqing/p/17101201.html

相关文章

  • 多层嵌套的数组扁平化处理
    数组将多层嵌套的数组做扁平化处理例如:类似于将letarr=[1,2,3,[4,[5,6,[7],8]],9]处理成[1,2,3,4,5,6,7,8,9]方法一:递归functionflattenArr(arr){leta......
  • 使用nvm实现自由切换nodejs版本
    首先安装使用nvm前需要删除卸载干净!!!可以去GitHub安装最新的版本:https://github.com/nvm-sh/nvm或者直接下载Windows的releases版本安装:https://github.com/coreybutler/......
  • shiro-从数据库中获取授权信息与显示菜单在页面上(注解版和jsp标签)
    修改realm的doGetAuthorizationInfo,从数据库查询权限信息。使用注解式授权方法。使用jsp标签授权方法。1.修改doGetAuthorizationInfo从数据库查询......
  • Reactjs学习之fetch请求
    ReactJS通过fecth异步加载数据,并且不需要加载任何模块。是一种XMLHttpRequest的替代方案,除了用ajax获取后台数据外我们还可以使用fetch、axios等方式。1.GET使用方法:/**......
  • AJAX概念以及原生JS方式
    ------------恢复内容开始------------AJAX概念概念:ASynchronous JavaScriptAndXML (异步的JacaScript和XML)异步和同步:客户端和服务器端相互通信的基础上......
  • JS中? ?和?. 和||的区别
    1、??与||的区别1)相同点:??和||的用法相同,都是前后是值,中间用符号连接,根据前面的值来判断最终是返回前面的值还是后面的值。One??TwoOne||Two2)不同点:判断的......
  • JS获取当前页面 URL 参数方法(转)
    转自:JS获取URL参数方法、js获取当前url中的参数、JS获取URL参数的4种方法总结法一constresult=newURLSearchParams(this.props.location.search);constparam=res......
  • 前端 js 将字符串类型转换成其他类型
    方法一eval(argStr)函数,一般传入任何参数都能强转成对应类型。如果想把参数先转成字符串再使用eval转成真实类型,可以使用String()函数进行强转,String(argObj)方法二......
  • JS数据类型转换,转数值,转字符串,转布尔(转)
    转自:JS数据类型转换,转数值,转字符串,转布尔1.转数值numberparseInt(‘内容‘/变量名)可以强制把字符串转整数数值,隐式转换Parsefloat(‘内容‘/变量名)可以强制把有......
  • Jmeter-后置处理器-json提取器(相对路径${..date})与正则提取器(万能表达式.*?)
    1、json提取器-相对路径以及多个参数(写默认值)  如果你的响应体为json格式,那么优先选用json提取器如果想要提前请求中内容、响应的头部内容、或者响应体格式非json格......