面试题:JavaScript多维数组转换一维

题目:

  var array = [1, [2, 3, [4, 5,], 6], 7, 8];

  写一个方法flatArray(array ),得到[1, 2, 3, 4, 5, 6, 7, 8]

解答:

  1.二逼写法:

function flatArray(arr) {
    var temp =  arr.join().split(‘,‘),
        len = temp.length,
        result = [];
    for(var i=0; i<len; i++) {
        result.push(parseInt(temp[i]));
    }
    return result;
}

 

  2.递归:

function flatArray(arr) {
    var result = [];
    for(var i = 0, l = arr.length; i < l; i++){
        if(arr[i] instanceof Array) {
            result = result.concat(arguments.callee(arr[i]));
            // 或result = result.concat(flatArray.call(this, arr[i]));
        }
        else {
            result.push(arr[i]);
        }
    }
    return result;
}

  3.forEach(或map、reduce等)

function flatArray(arr) {
    var result = [];
    arr.forEach(function(item, index, origin){
        Array.isArray(item) ? result = result.concat(flatArray(item)) : result.push(item);
    })
    return result;
}

  4.高端写法(闭包):

var flatArray = function(ret) {
    function toArr(arr) {
        arr.forEach(function(item) {
            item instanceof Array ? toArr(item) : ret.push(item);
        });
    }

    return function(arr) {
        toArr(arr);
        return ret;
    }

}([]);
时间: 2024-10-08 20:04:39

面试题:JavaScript多维数组转换一维的相关文章

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

多维数组转一维数组:[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 &

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

剑指offer 面试题(二维数组中的查找) (2)

面试题: 二维数组中的查找 /* 题目:   在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成 一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该数. */ ps:(其实前段时间我就做过这道题,今天看到了,觉得还是有点生,那就再来一次吧) 题目分析:  在分析这个问题的时候,我们首先要看,在一个二维数组中查找一个数字是否存在,那么很多人就觉得 简单了,遍历二维数组与所需要查找的数字进行比较不就完了!  不可否认的是你说的是可行的,可是

【剑指Offer面试题】二维数组中的查找

下决心AC所有剑指offer面试题. 九度OJ面试题地址:http://ac.jobdu.com/hhtproblems.php 书籍:何海涛--<剑指Offer:名企面试官精讲典型编程题> 对于面试题,面试官往往更希望我们能提出优化方法,这样更能体现我们的思维能力以及传说中的"内功".所以做剑指offer要着重训练这方面,多总结多细究,总是有好处的.加油~ 二维数组中的查找 时间限制:1 秒内存限制:32 兆 特殊判题:否提交:19005解决:3642 题目描述: 在一个

将二维数组转为一维数组的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; } 第二种方法: 代

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 );

多维数组变成一维数组

将多维数组变成一维数组: /** * @method 多维数组变成一维数组 * @staticvar array $result_array * @param type $array * @return type */ private function array_multi2array($array) { static $result_array = array(); foreach ($array as $key => $value) { if (is_array($value)) { $t

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

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

Python 迭代器&amp;生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 迭代器&