首页 > 其他分享 >多维数组扁平化处理的几种方法

多维数组扁平化处理的几种方法

时间:2022-11-04 08:55:07浏览次数:58  
标签:function arr return 扁平化 res item flatten 数组 多维

方法一、字符串化+数组化

function flatten(arr) {
  let count = 0;
  return  arr.toString().split(',').map(function(item) {
    	return Number(item)
    })
} 
flatten([1, [2, 3, [4, 5]]])
function flattenNew(arr) {
    return arr.join(',').split(',').map(function(item) {
        return parseInt(item);
    })
}
flattenNew([1, [2, 3, [4, 5]]])

方法二、reduce实现法

function flatten(arr) {  
    return arr.reduce((result, item)=> {
        return result.concat(Array.isArray(item) ? flatten(item) : item);
    }, []);
}
flatten([1, [2, 3, [4, 5]]])

方法三、扩展运算符法

//根据这个结果我们可以做一个遍历,若arr中含有数组则使用一次扩展运算符,直至没有为止。
function flatten(arr) {
    while(arr.some(item=>Array.isArray(item))) {
        arr = [].concat(...arr);
    }
    return arr;
}
flatten([1, [2, 3, [4, 5]]])

方法四、递归

function flatten(arr) {
    var res = [];
    arr.map(item => {
        if(Array.isArray(item)) {
            res = res.concat( flatten(item) );
        } else {
            res.push(item);
        }
    });
    return res;
}

标签:function,arr,return,扁平化,res,item,flatten,数组,多维
From: https://www.cnblogs.com/Sultan-ST/p/16856525.html

相关文章

  • 创建数组,增删改查
    创建数组letarr=[];letarr=newArray(1,2,5);letarr=Array.from([1,2,3],item=>item+2);//[3,4,5]letarr=arr1.concat(arr2,arr3);//返回新数组,concat......
  • 实验4 类与数组、指针
    1#pragmaonce2#include<iostream>3usingnamespacestd;4classvectorInt{5public:6vectorInt(intn):size(n){7cout<<"constr......
  • 88.合并两个有序数组
    给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合......
  • Java学习笔记day3--二维数组
    packageday4_array;importjavax.swing.plaf.synth.SynthFormattedTextFieldUI;//一维数组的元素仍然是一维数组,则构成了二维数组publicclassArrayDemension2{......
  • 福建WC2014 路径权值(Kruskal重构树 + 树状数组)
    题目描述:给定一个带权树,树上任意两点间的路径权值\(d\left(x,y\right)\)定义为\(x,y\)这两个点之间路径上的最小值,树上任意一点x的权值定义为这个点到树上其他所有点......
  • 数组
    数组名称 代表一个数组的第一个元素 intarr[5]; arr={0,1,2,3,4};//错误的写法这里的arr指的是数组的第一个元素即arr[0]不能给一个元素赋值5个值......
  • python描述 LeetCode 1486. 数组异或操作
    python描述LeetCode1486.数组异或操作  大家好,我是亓官劼(qíguānjié),在【亓官劼】公众号、GitHub、B站、华为开发者论坛等平台分享一些技术博文,主要包括前端开发、......
  • js数组操作——对象数组根据某个相同的字段分组
    先说点废话最近在实际业务中,需要编写一个方法根据数组中每一个对象的一个相同字段,来将该字段值相等的对象重新编入一个数组,返回一个嵌套的数组对象,特地来做个总结。当然......
  • 实验四 类与数组,指针
    实验任务5:task5.hpp#pragmaonce#include<iostream>#defineMAXSIZE10000usingnamespacestd;classvectorInt{public: //构造函数与析构函数 vectorInt(in......
  • 树状数组
    单点修改,区间查询#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#definelowbit(x)(x&(-x))constintN=5e5+10;inta[N],s[N];intn,m;voi......