打散多维数组--多维数组降阶

问题?

怎么把 arr = [[1,3,4,5],[2,3,5]];变为一维呢?比如:arr = [1,3,4,5,2,3,5];

那如果更多维度的呢?比如:arr=[2,3,3,4,[2,3,4,[13,3,[3,4,6],4]]];;

方案一:递归试试

arr=[[1,3,4,5],[2,3,5]];
    var arr1=[];
    function addNum(e){
	e.forEach(function(e){
		if(typeof(e)!="number"){
			e.forEach(function(e){
				addNum(e);
			})
		}else{
			arr1.push(e);
		}
		})

	}
     arr.forEach(function(e){
	addNum(e);
     });
console.log(arr1);   

简单的维度还可以,但是数组维度变得很多的情况下,递归不见得很好用啊?

方案二:数组的特殊处理

arr=[2,3,3,4,[2,3,4,[13,3,[3,4,6],4]]];
arr=""+arr;            //这里对数组进行处理
console.log(arr);      //2,3,3,4,2,3,4,13,3,3,4,6,4
arr=arr.split(",");
console.log(arr);      //["2", "3", "3", "4", "2", "3", "4", "13", "3", "3", "4", "6", "4"]
var arr1=[];
for(var i=0;i<arr.length;i++){
   arr1[i]=eval(arr[i]);
}
console.log(arr1);     //[2, 3, 3, 4, 2, 3, 4, 13, 3, 3, 4, 6, 4]; 

即使处理更高维度的数组也是可以的。

方法二巧妙的利用数组与字符串的隐式转换,再利用字符串的方法,字符串分割成字符串数组,最后再转成数值型数组。

  

时间: 2024-10-27 07:09:00

打散多维数组--多维数组降阶的相关文章

php多维数组化一维数组

一.使用foreach <?php function arr_foreach ($arr) { static $tmp=array(); if (!is_array ($arr)) { return false; } foreach ($arr as $val ) { if (is_array ($val)) { arr_foreach ($val); } else { $tmp[]=$val; } } return $tmp; } $a = array(1,2=>array(3,4=>

java数组(一维数组,二维数组)

数组初始化: 1,动态初始化:数组定义与为数组分配空间和赋值的操作分开进行 2,静态初始化:在定义数组的同时就为数组元素分配空间并赋值 3,默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此,数组分配空间之后 每个元素也被按照成员的规则被隐士的初始化值 ------------------------------------------------. 一维数组: package day06; import java.util.Date; /*** * 数组演示 * 数组的声明: * t

环形二维数组最大子数组的和

设计思路: 因为之前做过二维数组的和环形一维数组的,所以第一感觉就是能不能把这两种整改一下结合起来,所以采用的做法就是将二维环形变化为一维环形,在此采用的方法是从第一行开始,第一行计算出最大子数组,然后第一行和第二行相加为一维计算最大子数组,然后第一行.第二行和第三行,以此类推,最后将各子数组的最大值进行比较,得到最大的即为子数组和的最大值. 实验代码: //环形一维数组求最大子数组 package erwei; public class oneArray { private int i; pu

基本语法和数组(二维,多维,交错数组)

class Program { static void Main(string[] args) { // TestJiaoCuo(); Console.ReadKey(); } //交错数组. static void TestJiaoCuo() { //交错数组. 交错数组的本质是1个1维数组 只不过这个1维数组的元素又是数组,. int[][] arr = new int[3][]; arr[0] = new int[3]; arr[1] = new int[5]; arr[2] = new

二维数组,矩形数组 集合

二维数组,矩形数组 集合 二维数组,矩形数组集合 一.二维数组: 一维数组----豆角 二维数组----表格 1)定义: 一维数组: 数据类型[] 数组变量名 = new 数据类型[数组长度]; 数据类型[] 数组变量名 = new 数据类型[数组长度]{1,2,3....}; 2)二维数组: 数据类型[,] 数组变量名 = new 数据类型[行数,列数]; int[,] a = new int[3,4]; 赋值: a[行下标,列下标] = 值       下标都是从0开始的 取值: a[行下标

二维数组,锯齿数组和集合

一.二维数组 二维数组:一维数组----豆角二维数组----表格 定义:1.一维数组:数据类型[] 数组变量名 = new 数据类型[数组长度];数据类型[] 数组变量名 = new 数据类型[数组长度]{1,2,3....}; 2.二维数组:数据类型[,] 数组变量名 = new 数据类型[行数,列数];int[,] a = new int[3,4]; 赋值: a[行下标,列下标] = 值 下标都是从0开始的取值: a[行下标,列下标] 题目:一个班6个人,从键盘输入每个学号语文,数学,外语成

一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式

 打印数组中的每个元素,打印每个元素的地址: #include <stdio.h> #include <stdlib.h> void main(void) { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int *p = a; p < a + 10;p++)  //指针类型决定4个字节 { printf("\n%p,%d", p, *p); } getchar(); } 指针数组 #inclu

数组(一维数组、二维数组)

数组概述 C# 数组从零开始建立索引,即数组索引从零开始.C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似.但还有一些差异应引起注意. 这些其实和泛型有些类似,数组的操作没有泛型方便,但是性能却不是泛型所能比拟的 声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面.在 C# 中,将方括号放在标识符后是不合法的语法. int[] table; // not int table[]; 另一细节是,数组的大小不是其类型的一部分,而在 C 语言中它却是数组类型的一部分.这使您可

将二维数组转为一维数组的2种方法

如何将下面的二维数组转为一维数组. 代码如下: $msg = array( array( 'id'=>'45', 'name'=>'jack' ), array( 'id'=>'34', 'name'=>'mary' ), array( 'id'=>'78', 'name'=>'lili' ), ); 第一种方法: 代码如下: foreach($msg as $k => $v){ $ids[] = $id; $names[] = $name; } 第二种方法: 代

20160423 二维数组,锯齿数组和集合

2016-04-23  20:46:26 一.二维数组: 一维数组----豆角 二维数组----表格 1)定义: 一维数组: 数据类型[] 数组变量名 = new 数据类型[数组长度]; 数据类型[] 数组变量名 = new 数据类型[数组长度]{1,2,3....}; 2)二维数组: 数据类型[,] 数组变量名 = new 数据类型[行数,列数]; int[,] a = new int[3,4]; 赋值: a[行下标,列下标] = 值       下标都是从0开始的 取值: a[行下标,列下标