我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JS数组降维的几种方法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JS数组降维的几种方法详解

二维数组降维

使用数组实例方法concat和ES6扩展运算符降维


let arr=[1,2,[3,4],5];
let arr1=[].concat(...arr);
//先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的功能
console.log(arr1);
// [1, 2, 3, 4, 5]

//ES6之前用apply打散数据的兼容性写法
var arr2=[1,2,[3,4],5];
var arr3=[].concat.apply([],arr2);
console.log(arr3);
// [1, 2, 3, 4, 5]

多维数组降维

递归降维


//几种利用数组函数递归降维的写法
//some&concat
//利用some检查数组中是否含有数组有就在调用自己进行降维
function fun(arr){
  arr=[].concat(...arr); 
  //再检查降维后的数组中是否还包含子数组
  let hasArray=arr.some(function(elem){
      return Array.isArray(elem);
  })
  if(hasArray){ //如果包含子数组
      arr=fun(arr);//就只能再降维一次,直到检查不再包含子数组为止
  }
    return arr;
};

//forEach&instanceof
//对数组每个元素进行判断看其是不是数组是在继续调用自己,不是把他放进提前准备的空数组中 
function fun2(arr){
  let ret = [];
  let toArr = function(arr){
    arr.forEach(function(item){
      item instanceof Array ? toArr(item) : ret.push(item);
    });
  }
  toArr(arr);
  return ret;
}

//reduce&concat
//最后准备一个空数组,看传入数组中的每一项是不是数组是就重新调用自己不是就用concat汇总到空数组中
function fun3(sarr){
    return sarr.reduce((pre,val)=>{
        return Array.isArray(val) ? pre.concat(fun3(val)): pre.concat(val)
    },[])
}

Array.prototype.flat()

ES10 新增Array.prototype.flat(),用于将嵌套的数组打散,变成一维的数组。该方法返回一个新数组,对原数据没有影响。


var arr1 = [1, 2, [3, 4]];
arr1.flat(); 
// [1, 2, 3, 4]
 
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
 
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
 
//使用 Infinity 作为深度,展开任意深度的嵌套数组
arr3.flat(Infinity); 
// [1, 2, 3, 4, 5, 6]

到此这篇关于JS数组降维的几种方法的文章就介绍到这了,更多相关JS数组降维内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JS数组降维的几种方法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JS数组降维的方法详解

本篇内容介绍了“JS数组降维的方法详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JS是什么JS是JavaScript的简称,它是一种直译
2023-06-14

js多维数组降维的5种方法

本文主要介绍了js多维数组降维的5种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-15

js多维数组降维的方法有哪些

这篇文章主要介绍“js多维数组降维的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js多维数组降维的方法有哪些”文章能帮助大家解决问题。多维数组降维也就是数组扁平化数组扁平化的方法有很多种
2023-07-05

js数组删除某个元素有几种方法

js数组删除某个元素有4种方法,分别是:1、使用splice;2、使用filter;3、使用pop方法和shift;4、使用delete关键字。JavaScript是一门广泛应用于Web开发的编程语言,它提供了许多操作数组的方法。在Java
2023-08-02

php判断几维数组的方法

这篇文章给大家分享的是有关php判断几维数组的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php判断几维数组的方法:首先创建一个PHP示例文件;然后定义一个TestArray函数;最后通过foreach以及
2023-06-08

c++利用vector创建二维数组的几种方法总结

这篇文章主要介绍了c++利用vector创建二维数组的几种方法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

JavaScript中清空数组的几种方法

本文主要介绍了JavaScript中清空数组的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-17

Python中数组的几种使用方法

二维数组的初始化matirx_done = [[0 for i in range(0, len(matirx))]for j in range(0, len(matirx[0]))]就将其初始化为一个与matrix相同大小的元素全为 0 的
2023-01-31

vuex存储数据的几种方法实例详解

在浏览网页时我们有些时候需要记住一些用户选择的信息,比如登陆时我们如果选择了记住密码,那么我们下次进入该网页时就会有你上次的登陆信息,下面这篇文章主要给大家介绍了关于vuex存储数据的几种方法,需要的朋友可以参考下
2022-11-13

详解NC反弹shell的几种方法

假如ubuntu、CentOS为目标服务器系统 kali为攻击者的系统,ip为:192.168.0.4,开放7777端口且没被占用 最终是将ubuntu、CentOS的shell反弹到kali上 正向反弹shellubuntu或者C
2022-06-04

详解Android UI更新的几种方法

前言在android开发中,界面UI的更新都是在主线程来完成的。线程分为主线程(Main Thread,简称MT)和工作线程(Work Thread,简称WT),我们通常会在WT中执行一些比较耗时的操作,比如下载,网络,缓存等,然后在将结果
2023-05-31

浅谈shell 遍历数组的几种方法

背景某天遇到一个问题,现象如下:第一种遍历正常打印元素,然而第二种遍历只会打印一个元素!#!/bin/bash # $1 代表文件目录 # 执行 eg: # sh your_shell.sh /u
2022-06-04

编程热搜

目录