精华内容
下载资源
问答
  • 数组降维
    2020-03-15 13:41:02
    1.利用toString将数组转换字符,然后通过split方法在转换成数组
    const arr = [
    			[1,2],
    			[3,4]
    		]
    		const newArr = arr.toString().split(',');
    		console.log(newArr)//["1", "2", "3", "4"]
    //这种方法只能使用在全是基本数据类型的数组,因为一旦数组里有对象,调用toString方法得到的是"[object Object]"
    
    2.利用[].concat.apply实现降维
    const arr = [
    		const arr = [
    			[1,2,3],
    			[4,5,6],
    			{xx:"xx"}
    		];
    		console.log([].concat.apply(1,arr)) // [Number, 1, 2, 3, 4, 5, 6, {…}]
    		//[].concat() 可以将两个数组合并到一个[]数组中,这种方法只能应用到一维数组中
    		//从例子中看到 如果指定apply的第一个参数,那么他会将二维数组降维成一维数组,并且该参数会成为对象形式存在,这是因为apply会将每一项单独的拆分并且一个一个传入[].concat() 中 
    	//最终我们可以为apply的第一个参数传入一个空数组,这样就可以实现降维
    	[].concat.apply([],arr);// [1, 2, 3, 4, 5, 6, {…}]
    
    3.上面都只能实现二维数组的降维,想要对多维数组降维需要用到递归的方式
    
    function fallten(arr){
    	//存放最终结果
    	let ret = [];
            arr.forEach((item)=>
            //如果数组里存放的数组就再次调用方法 如果是对象或是基本数据类型就直接push
                item instanceof Array ? fallten(item) : ret.push(item));
        }
    
    4.Array​.prototype​.flat()   flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
    参数:指定要提取嵌套数组的结构深度,默认值为 1。
    
    
    console.log([1 ,[2, 3]].flat()); // [1, 2, 3]
     
    // 指定转换的嵌套层数
    console.log([1, [2, [3, [4, 5]]]].flat(2)); // [1, 2, 3, [4, 5]]
     
    // 不管嵌套多少层【使用 Infinity 作为深度,展开任意深度的嵌套数组】
    console.log([1, [2, [3, [4, 5]]]].flat(Infinity)); // [1, 2, 3, 4, 5]
     
    // 自动跳过空位【会移除数组中的空项】
    console.log([1, [2, , 3]].flat());// [1, 2, 3]
    
    
    
    更多相关内容
  • 二维数组降维 二维数组只有两个维度,降维比较简单,也不用考虑太复杂的算法逻辑,我们看一下二维数组降维的几种方法; 遍历降维 var arr = [ ['h', 'e', 'l', 'l', 'o'], ['m', 'y'], ['w', 'o', 'r', 'l', 'd'...
  • js代码-多维数组降维去重排序
  • 【JS】数组降维

    2022-06-28 17:05:32
    在项目中,我们常常要处理比较复制的数据结构,而又找不到现成的方法,这时候就需要我们手动用 js 原生去封装一个了,这里介绍的是将多维数组降一层结构的方法,比如三维数组转二维数组、二维数组转一维数组,...

    文章目录

    在项目中,我们常常要处理比较复制的数据结构,而又找不到现成的方法,这时候就需要我们手动用 js 原生去封装一个了,这里介绍的是将多维数组降一层结构的方法,比如三维数组转二维数组、二维数组转一维数组。

    • 数据结构:
    // 三维数组
    [
        [
            [
                8,
                680
            ]
        ],
        [
            [
                6,
                681
            ]
        ]
    ]
    // 二维数组
    [
        [
            8,
            680
        ],
        [
            6,
            681
        ]
    ]
    
    • 方法1:reduce + concat
    const arr3 = [ [ [ 8, 680 ] ],  [ [ 6, 681 ] ] ];
    const arr2 = [ [ 8, 680 ],  [ 6, 681 ] ];
    function arr3ToArr2(arr){
    	return arr.reduce((acc, val) => acc.concat(val), []);
    }
    console.log(arr3ToArr2(arr3))	// [ [ 8, 680 ],  [ 6, 681 ] ]
    
    • 方法2:... + concat
    const arr3 = [ [ [ 8, 680 ] ],  [ [ 6, 681 ] ] ];
    const arr2 = [ [ 8, 680 ],  [ 6, 681 ] ];
    function arr3ToArr2(arr){
    	return [].concat(...arr)
    }
    console.log(arr3ToArr2(arr3))	// [ [ 8, 680 ],  [ 6, 681 ] ]
    
    展开全文
  • 数组扁平化,听起来很高级的亚子,其实就是将多维数组转换为一维数组降维)。 例如: [1, 2, 3, [4, 5, 6, [7, 8 ]]] // 转换为 [1, 2, 3, 4, 5, 6, 7, 8 ] 数组扁平化的几种方法 方法1、ES6中的 flot 方法 ...

    什么是数组扁平化?

    数组扁平化,听起来很高级的亚子,其实就是将多维数组转换为一维数组(降维)。
    例如:

    [1, 2, 3, [4, 5, 6, [7, 8 ]]]
    // 转换为
    [1, 2, 3, 4, 5, 6, 7, 8 ]
    

    数组扁平化的几种方法

    方法1、ES6中的 flat 方法

    说起 ES6 的这个新方法,我感觉还是挺好玩的。
    flat(depth) 方法中的参数depth,代表展开嵌套数组的深度,默认是1,表示展开一层。也就是说你在参数项写几,就展开几层。是不是很有趣?
    flat 详细说明:点这里
    flat 的基本语法:

     Array.flat()
    

    在感觉有趣的同时,又发现了一个新的问题:有时候我们不知道数组到底嵌套了几层,这该咋写呢?原来它还有把参数值设置为 Infinity,意思是无限层。这样不管有多少层嵌套都可以轻松的把数组转为一维的数组。

    具体操作代码:

    let arr = [1, 2, 3, [4, 5, 6, [7, 8 ]]]
    let newArr = arr.flat(Infinity)
    console.log(newArr); //  [1, 2, 3, 4, 5, 6, 7, 8]
    

    方法2、 for 循环

    利用 Array.isArray 方法判断,如果是数组,就再次调用该函数(递归),实现数组扁平化。
    Array.isArray 详细说明: 点击这里

    let arr = [1, 2, 3, [4, 5, 6, [7, 8 ]]]
        function flatten (arr) {
          let newArr = []
          for(let i = 0;i<arr.length;i++){
            if (Array.isArray(arr[i])) {
              // 如果是数组, 重新调用这个函数
              // 然后把函数的结果配合扩展运算符推到新数组中
              newArr.push(...flatten(arr[i])) 
            } else {
              // 否则就把数据添加到新数组
              newArr.push(arr[i])
            }
          };
          return newArr
        }
        console.log(flatten(arr)); 
    

    方法3、while 循环

    利用 some 遍历数组,如果是数组,配合 concat 方法,把原数组展开合并到一个新数组中。
    concat 方法更多详情:点击这里

    let arr = [1, 2, 3, [4, 5, 6, [7, 8 ]]]
        function flatten (arr) {
          // 利用 some,只要有一个满足就返回true
          while(arr.some(item=> Array.isArray(item))) {
            // concat: 可以合并数组
            // 如果是数组,就把他展开,合并到一个新的数组中
            arr = [].concat(...arr)
          }
          return arr
        }
        console.log(flatten(arr)); 
    

    方法4、reduce

    主要使用 reduce 。
    reduce 具体的使用方法:点击这里

    let arr = [1, 2, 3, [4, 5, 6, [7, 8 ]]]
        function flatten (arr) {
          // 传两个参数,第一个是开始的数据,第二个是下一个元素
          return arr.reduce((newArr, next)=> {
            // 如果下一个是数组,就再调用这个函数
            // 如果不是,直接返回这个元素
            // 初始值给一个空的数组
          }, [])
        }
        console.log(flatten(arr)); 
    

    差不多了。如果在实际场景需要用到数组降维,推荐使用 ES6 的 flat 方法,别的方法代码太多了,影响项目体积。

    展开全文
  • 数组降维的方法

    2022-06-25 15:45:16
    可以使用深度降维方法,也可以在括号里面拼写数字,来进行解套层数

    在新增的es10中,有个数组姜维的方法。

    flat方法

     可以使用深度降维方法,也可以在括号里面拼写数字,来进行解套层数

    展开全文
  • JS数组降维的几种方法详解  二维数组降维 使用数组实例方法concat和ES6扩展运算符降维 let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的...
  • JS数组降维–Array.prototype.concat.apply二维数组降为一维数组循环降维concat降维apply和concat降维Vue2.6.11版本源码降维多维数组降为一维数组递归降维 把多维数组(尤其是二维数组)转化为一维数组是业务开发中...
  • js实现数组降维

    2022-01-05 21:01:46
    js、数组、数组降维、flatMap、递归、多维数组的降维、flat
  • JS实现数组降维

    2022-01-29 16:39:21
    方法接受一个参数表示要降多少个维度,如输入1,表示将原数组的维度减一,如果输入Infinity则表示将原数组的维度将为1 let arr = [1,[2,3,[4,5,[6,7]]]]; let newArr = arr.flat(Infinity) console.log(newArr);...
  • js 打散二维数组最简方法(JS数组降维的几种方法)
  • }) return song } console.log(ls(li)) //some&concat //利用some检查数组中是否含有数组有就在调用自己进行降维 function fun(arr){ //先使用concat把最外层的去掉 arr=[].concat(...arr); //再检查降维后的数组...
  • 多维数组降维的几种方法
  • Js数组降维

    2021-03-27 14:00:36
    Js数组降维的两种常用方法: 1.使用函数的flat()方法; 2.使用递归降维; 下面分别介绍两种方法: 1.flat()方法: //falt(num) num => 降几个维度,不写默认为一维 当num为Infinity,意味着将数组变成一维数组...
  • 多维数组降维的几种方法

    千次阅读 2021-11-17 17:48:06
    多维数组降维也就是数组扁平化 数组扁平化的方法有很多种,但是我主要用五种,如下: 一,递归 // 一,递归 let arr = [1, [2, 3, 4, 5], [6, 7, 8, 9, [10, 11, 12, [14, 15, 16]]]] let newArr = [] const ...
  • JS reduce()方法详解,使用reduce数组去重 - 听风是风 - 博客园
  • PHP-php多维数组降维

    2021-03-25 08:11:09
    话说tp的查询,大家用过的都应该清楚tp-select()出来是二维数组,例:php有没有自带的的函数将其转换成一维数组,而不是用foreach来循环?我这里为什么不想用foreach呢!因为数据量太大了,上万条的数据循环起来...
  • js多维数组降维处理

    2021-02-19 16:11:49
    在和后端兄弟对接接口的时候,经常遇到一个让人看着脑壳痛的...里面有各种数组和对象的处理方法,自己自行查看api,这里主要讲讲数组降维处理 注意先在页面引入lodash.js //浏览器环境: <script src="lodash
  • 点击上方前端Q,关注公众号回复加群,加入前端Q技术交流群来源 | https://www.fly63.com01、数组字符串化let arr = [[123456], [333], 78...
  • 使用数组实例方法concat和ES6扩展运算符降维 let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的功能 console.log(arr1); // [1, 2, 3, 4, 5] 3....
  • let recursionData = [ { id: 1, name: "一级", children: [ { id: 2, name: "二级-1", children: [ { id: 7, name: "三级-1", children: [ ... {
  • reduce具体使用以及使用reduce,toString,flat进行数组降维
  • JS数组降维的几种方法

    多人点赞 热门讨论 2021-04-07 10:24:09
    二维数组降维 使用数组实例方法concat和ES6扩展运算符降维 let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的功能 console.log(arr1); // [1, 2, ...
  • 二维数组降维 使用数组实例方法concat和ES6扩展运算符降维 let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的功能 console.log(arr1); // [1, ...
  • 今天看到一道题目,花了半天时间,解了出来一个数组var meta = [1,2,[3,4,[5]],6,[7,[8,9,[10,11,[12]]]]];,通过递归的方式依次取出这个数组中的数据1、首先,针对这道题,如果不使用递归,最简单的解法,是先对其...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,758
精华内容 6,303
关键字:

数组降维

友情链接: rcwa_Palik_Au.zip