随题而学(二)多维数组转一维数组

多维数组转一维数组:[1,[2,3]] ==》 [1,2,3]

function tran(array){
    if(Object.prototype.toString.call(array) != ‘[object Array]‘){
        alert(Object.prototype.toString.call(array) + "非数组")
        return ;
    }

    var newArr = [];

    function trans(arr){
        for (var num = 0; num < arr.length;num ++){
            if(arr[num].length){
                trans(arr[num]);
            } else {
                newArr.push(arr[num]);
            }
        }
    }

    trans(array);
    return newArr;
}

[javascript]

op = Object.prototype,
ostring = op.toString,
...
function isFunction(it) {
    return ostring.call(it) === ‘[object Function]‘;
}
function isArray(it) {
    return ostring.call(it) === ‘[object Array]‘;
}  

Object.prototype.toString  与 typeof 区别:

typeof

[plain]

  1. 在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 "object"。

ECMA 对Object.prototype.toString的解释

[plain]

  1. Object.prototype.toString ( )
  2. When the toString method is called, the following steps are taken:
  3. If the this value is undefined, return "[object Undefined]".
  4. If the this value is null, return "[object Null]".
  5. Let O be the result of calling ToObject passing the this value as the argument.
  6. Let class be the value of the [[Class]] internal property of O.
  7. Return the String value that is the result of concatenating the three Strings "[object ", class, and "]".

http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.4.2

[javascript]

var oP = Object.prototype,
toString = oP.toString;  

console.log(toString.call([123]));//[object Array]
console.log(toString.call(‘123‘));//[object String]
console.log(toString.call({a: ‘123‘}));//[object Object]
console.log(toString.call(/123/));//[object RegExp]
console.log(toString.call(123));//[object Number]
console.log(toString.call(undefined));//[object Undefined]
console.log(toString.call(null));//[object Null] 

参考:http://my.oschina.net/sfm/blog/33197http://blog.csdn.net/spy19881201/article/details/12192767http://www.cnblogs.com/Aralic/p/4397015.html

时间: 2024-10-18 10:57:32

随题而学(二)多维数组转一维数组的相关文章

[C++]二维数组还是一维数组?

记得刚学习C++那会这个问题曾困扰过我,后来慢慢形成了不管什么时候都用一维数组的习惯,再后来知道了在一维数组中提出首列元素地址进行二维调用的办法.可从来没有细想过这个问题,最近自己写了点代码测试下,虽然还是有些不明就里,不过结果挺有意思. 为了避免编译器优化过度,用的是写操作,int,测试分为不同大小的空间,同样大小空间不同的行和列数.分别记录逐行写入,逐列写入,按间隔写入,空间申请和释放的时间. 测试代码 一维数组的申请和释放 1 // Create 2 int *m = new int[n_

PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?

如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组'; } else { echo '不是一维数组'; } PHP手册: int count ( mixed $var [, int $mode ] )  --  计算数组中的单元数目或对象中的属性个数  如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组

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

数组概述 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; } 第二种方法: 代

C# 数组、一维数组、二维数组、多维数组、锯齿数组

C#  数组.一维数组.二维数组.多维数组.锯齿数组 一.数组: 如果需要使用同一类型的对象,就可以使用数组,数组是一种数据结构,它可以包含同一类型的多个元素.它的长度是固定的,如长度未知的情况下,请使用集合. 二.一维数组: 声明及初始化: class Program { static void Main(string[] args) { //方法一 int[] num = new int[3];//声明一个长度为3的值类型的数组: num[0] = 3;//为数组赋值: num[1] = 5

把简单的二维数组变成一维数组

在工作中我们经常需要把二维数组变成一维数组.那么就需要循环拿出来,其实有时候我们可以使用一些小技巧,借助php的内置函数来实现,但是我说的只是简单的二维数数组$arr= array('name'=>array('a'=>'abc','b'=>'bcd','c'=>'cde'));如果我们使用array_pop(),就可以拿到一维数组了,array_pop()本来是删除并返回数组的最后一个元素. 所以我们就可以将上诉的$arr变成array('a'=>'abc','b'=>

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=>

php - 多维数组转一维数组总结

二维数组转一维数组总结 例如将如下二位数组转以为以为一维数组 $records = [ [ 'id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe', ], [ 'id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith', ], [ 'id' => 5342, 'first_name' => 'Jane', 'last_name' =&

implode 多维数组转一维数组并字符串输出

//多维数组返回一维数组,拼接字符串输出 public function r_implode( $glue, $pieces ) { foreach( $pieces as $r_pieces ) { if( is_array( $r_pieces ) ) { $retVal[] = self::r_implode( $glue, $r_pieces ); } else { $retVal[] = $r_pieces; } } return implode( $glue, $retVal );