js中的多维数组转成一维数组

这篇具有很好参考价值的文章主要介绍了js中的多维数组转成一维数组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

只能将二维转一维:

 第1种:使用reduce和concat组合方法:

js中的多维数组转成一维数组

var arr =  [[1,2,[3,11,22,[222,99,100]]],[4,5,6],[7,8,9]];
var newArr = arr.reduce(function(pre,curr,index,array){
    return pre.concat(curr);
})    
console.log(newArr)//[1, 2, 3, 4, 5, 6, 7, 8, 9]
 

//VM676:5 (9) [1, 2, Array(4), 4, 5, 6, 7, 8, 9]

第2种:遍历数组,将每个值放到一个空数组中:

js中的多维数组转成一维数组

var arr = [[1,2,[3,11,22,[222,99,100]]],[4,5,6],[7,8,9]];
var newArr = [];
for (var i = 0;i<arr.length;i++){
    for(var j=0;j<arr[i].length;j++){
        newArr.push(arr[i][j]);
    }
}   
console.log(newArr)//[1, 2, 3, 4, 5, 6, 7, 8, 9]

//VM687:8 (9) [1, 2, Array(4), 4, 5, 6, 7, 8, 9]

第3种:使用apply结合concat,缺点是只能将二维转一维,多维数组则不对了。

js中的多维数组转成一维数组

js中的多维数组转成一维数组

const arr = [1,[2,3],[4,5]];
console.log([].concat.apply([],arr));
//VM96:2 (5) [1, 2, 3, 4, 5]

 js中的多维数组转成一维数组

const arr2 = [1,[2,[[3,4],5],6]];
console.log([].concat.apply([],arr2));
//VM114:2 (4) [1, 2, Array(2), 6]

多维(二维以上也能转化):

第1种:先转化为字符串,再将字符串转化为数组

js中的多维数组转成一维数组

var arr = [[1,2,[3,11,22,[222,99,100]]],[4,5,6],[7,8,9]];
var newArr1 = arr.join(",").split(",");
 var newArr2 = arr.toString().split(",");    //["1", "2", "3", "4", "5", "6", "7", "8", "9"]

console.log(newArr2)
//VM661:5 (14) ["1", "2", "3", "11", "22", "222", "99", "100", "4", "5", "6", "7", "8", "9"]

第2种:使用数组map()方法,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

js中的多维数组转成一维数组

var arr = [1,[2,[[3,4],5],6]];
function unid(arr){
        var arr1 = (arr + '').split(',');//将数组转字符串后再以逗号分隔转为数组
        var arr2 = arr1.map(function(x){
            return Number(x);
        });
        return arr2;
}
console.log(unid(arr));
//VM62:9 (6) [1, 2, 3, 4, 5, 6]

第3种:使用递归

js中的多维数组转成一维数组

var arr = [1,[2,[[3,4],5],6]];
var newArr = [];
    
function fun(arr){
        for(var i=0;i<arr.length;i++){
            if(Array.isArray(arr[i])){
                fun(arr[i]);
            }else{
                newArr.push(arr[i]);
            }
        }
    }
fun(arr);
console.log(newArr);//[1, 2, 3, 4, 5, 6]
//VM71:14 (6) [1, 2, 3, 4, 5, 6]

第4种:使用 reduce+递归

js中的多维数组转成一维数组

var arr = [1,[2,[[3,4],5],6]];
    const flatten = arr => arr.reduce(
            (acc,val) => acc.concat(Array.isArray(val)? flatten(val):val),[]
    )
    console.log(flatten(arr));//[1, 2, 3, 4, 5, 6]
//VM85:6 (6) [1, 2, 3, 4, 5, 6]

第5种:使用while循环

js中的多维数组转成一维数组

var myArray = [[1, 2],[3, 4, [5,22,33,[111,123,321]]], [6, 7, 8, 9]];
function flatten(arr) {
      while (arr.some(item => Array.isArray(item))) {
        arr = [].concat(...arr);
        //arr = Array.prototype.concat.apply([],arr);
      }
      return arr;
    }
  flatten(myArray);
 
 
//(14) [1, 2, 3, 4, 5, 22, 33, 111, 123, 321, 6, 7, 8, 9]

 文章来源地址https://www.toymoban.com/news/detail-502300.html

到了这里,关于js中的多维数组转成一维数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【PHP】二维数组转一维数组

    在 PHP 中,如果你想将一个二维数组转换为一维数组,你可以使用几种不同的方法。以下是一些常见的方法: array_column() 用于提取数组中的列,最为直接 array_map() 用于对数组中的每个元素应用回调函数,返回的是由回调函数的返回值组成的新数组。 以上任何一种方法都可以

    2024年02月04日
    浏览(48)
  • 【JavaSE】一维数组和二维数组详解

    欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 一维数组 基本语法 初始化 遍历和打印 数组是引用型变量 基本类型变量与引用类型变量的区别 null 数组传参和返回 总结 二维数组 基本语法 初始化 遍历和打印 数组:可以看成是相同类型元素的

    2024年04月09日
    浏览(34)
  • 【013】C++数组之一维数值数组和二维数值数组

    💡 作者简介:专注于C/C++高性能程序设计和开发,理论与代码实践结合,让世界没有难学的技术。包括C/C++、Linux、MySQL、Redis、TCP/IP、协程、网络编程等。 👉 🎖️ CSDN实力新星,社区专家博主 👉 🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、

    2024年02月06日
    浏览(45)
  • C语言中一维数组及二维数组的运用

    int * p  = arr; int * q = arr[1]; 其中arr是数组名,代表了整个数组的首元素地址,这个是一个常量,放在常量存储区,所以在给int*p赋值的时候可以不用带,而下面的arr[1]则代表数组里的某一个元素,所以在赋值时要加上  有个例题: 下列运行结果  解析:首先看main函数里的第二

    2024年02月13日
    浏览(35)
  • 【C语言】利用数组处理批量数据(一维数组和二维数组)

    前言 :在前面学习的程序中使用的变量都属于基本类型,例如整型、字符型、浮点型数据,这些都是简单的数据类型。对于简单的问题,使用这些简单的数据类型就可以了。但是对于有些需要处理的数据,只用以上简单的数据类型是不够的,难以反映出数据的特点,也难以有

    2024年02月08日
    浏览(42)
  • 065:vue中将一维对象数组转换为二维对象数组

    第065个 查看专栏目录: VUE ------ element UI 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeMount,mounted, beforeUpdate,upda

    2024年02月02日
    浏览(28)
  • 头歌——一维数组和二维数组全对答案秒过

    我相信大家都会,只是整个乱七八糟的事太多了,发布这个文章的目的不是让你去抄袭,而是去学习,不要说我传播啊,服了这个文章建议怎么还不消掉,难道他看出我在摸鱼了吗?虽然我现在就两个粉丝,嗯,这几天可以看出我更新不是很积极,主要是一直再写学生管理系

    2024年02月04日
    浏览(34)
  • 《C语言深度解剖》(4):深入理解一维数组和二维数组

    🤡博客主页:醉竺 🥰 本文专栏: 《C语言深度解剖》 😻 欢迎关注: 感谢大家的点赞评论+关注,祝您学有所成! ✨✨💜💛想要学习更多 数据结构与算法 点击专栏链接查看💛💜✨✨   数组是一组相同类型元素的集合。 数组的创建方式:  数组创建的实例:  注:数组

    2024年04月09日
    浏览(74)
  • C语言中函数返回数组(一维和二维)

    C语言中函数返回数组是很重要的一种应用,有时候在程序中调用函数返回数组可以更容易的实现我们想要的某些操作,比如一次返回多个值,这篇文章带来的是C语言中函数返回一维数组和二维数组的例子。 函数返回一维数组中需要注意的是:定义函数时需要在函数类型的后

    2024年02月04日
    浏览(38)
  • 从二维数组到一维数组——探索01背包问题的动态规划优化

    本文将继续上一篇博客爬楼梯之后继续讲解同样用到了动态规划的 01背包问题 在解决动态规划问题时,我们经常面临着空间复杂度的挑战。01背包问题是一个典型的例子,通常使用二维数组来表示状态转移,但这样会带来额外的空间开销。在本文中,我们将探讨如何通过优化

    2024年04月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包