精华内容
下载资源
问答
  • 本文实例讲述了PHP实现多维数组转字符串和多维数组转一维数组的方法。分享给大家供大家参考。具体实现方法如下: /** * @method 多维数组转字符串 * @param type $array * @return type $srting * @author ...
  • 函数名称:array_multi2single 函数原形:array array_multi2single(array) 实现功能:一个多维数组的数值存放到一维数组中,不保存Key。 <?php function array_multi2single($array) { static $result_array=...
  • 今天小编就为大家分享一篇关于js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 方法一、apply结合concat拉平数组 let arr=[[1,2,3],[4,5],[6]]; console.log([].concat...上面的方法是使用apply结合concat,缺点是只能将二维转一维多维数组就有问题了 方法二、ES6新增数组扩展 flat() [1, 2,...

    方法一、apply结合concat拉平数组

         let arr=[[1,2,3],[4,5],[6]];
         console.log([].concat.apply([],arr));
         //输出 [1, 2, 3, 4, 5, 6]
    

    上面的方法是使用apply结合concat,缺点是只能将二维转一维,多维数组就有问题了

    方法二、ES6新增数组扩展 flat()

    [1, 2, [3, 4]].flat()
    

    flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。
    如果我们不知道数组究竟层级有多深我们可以用Infinity关键字作为参数

    [1, [2, [3]]].flat(Infinity)
    // [1, 2, 3]
    

    1.扁平化n维数组
    1.终极篇

    [1,[2,3]].flat(2) //[1,2,3]
    [1,[2,3,[4,5]].flat(3) //[1,2,3,4,5]
    [1,[2,3,[4,5]]].toString()  //'1,2,3,4,5'
    [1[2,3,[4,5[...]].flat(Infinity) //[1,2,3,4...n]
    Array.flat(n)是ES10扁平数组的api,n表示维度,n值为Infinity时维度为无限大
    
    

    2.开始篇

    function flatten(arr) {
        while(arr.some(item=>Array.isArray(item))) {
            arr = [].concat(...arr);
        }
        return arr;
    }
    flatten([1,[2,3]]) //[1,2,3]
    flatten([1,[2,3,[4,5]]) //[1,2,3,4,5]
    实质是利用递归和数组合并方法concat实现扁平
    
    展开全文
  • 多维数组变成一维数组

    万次阅读 2018-07-21 01:07:23
    这个问题来源于一个朋友曾经问过我的问题,当时是一个二维数组变成一维数组。后面我想整理一下,整理一个多维,并且是不定维的数组。 一、二维数组变成一维数组 1、遍历数组,将元素一个个放入新数组 结果: ...

    这个问题来源于一个朋友曾经问过我的问题,当时是一个二维数组变成一维数组。后面我想整理一下,整理一个多维,并且是不定维的数组。

    一、二维数组变成一维数组

    1、遍历数组,将元素一个个放入新数组

    结果:

    如果元素不是数组,将会报错。下面是改良版:

    这样的方法仍显臃肿

    2、用apply的特性,将数组作为参数展开

    concat接受单个值作为参数,所以不需要识别。

    3、利用es6新增的扩展运算符将数组展开

    与concat类似。

    比较推荐扩展运算符的方法,书写简洁。

    二、多维数组变成一维数组

    多维数组变成一维,就是在二维变成一维的基础上递归调用。

    代码如下:

    1、遍历每一个元素,先判断再处理

    2、reduce方法

    2018-9-26新增:三、es6新增的flat及flatMap方法

    es2018为数组实例新增了flat及flatMap方法,用于将二维 或者多维数组拉平成一维数组。

    flat方法默认没有参数,这时只会降维降一层。可以传数字类型的参数指定降维次数。

    flat方法不改变原数组。

    如果想将任意维度的数组变成一位数组,可以传入Infinity。

     

    flatMap()方法,参数是一个回调函数,类似map方法的使用,数组的每个元素执行一次回调函数,然后对返回的数组执行flat()方法,只降一次维,

     

     

     

     

     

     

    展开全文
  • 以上这篇python numpy 一维数组转变为多维数组的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python二维列表一维列表的互相转换实例Python的...
  • 本文实例讲述了PHP多维数组转一维数组的简单实现方法。分享给大家供大家参考,具体如下: php语言本身没有将多维数组转为一维数组的函数,但是我们可以自己写一个php函数来实现将多维一维的功能。 运用了递归,...
  • 我的思想是:将第2维数据转置(transpose)到第一维,再用切片(slice)取出前三个数据,再转置回去: print(# original, input.shape) input_transpose = input.transpose((1, 0, 2, 3)) print(# transpose, input...
  • php把多维数组变为一维数组的方法

    千次阅读 2019-04-29 12:34:13
    种方法,使用php自带的函数:array_walk_recursive: $colum = [[1, 2, 3], [4, 5, 6], [7, 8, 9=>['a','b'=>['c','d']]]]; $arr = reduceArray($colum); var_dump($arr); function reduceArray($...

    第一种方法,使用php自带的函数:array_walk_recursive:

    $colum = [[1, 2, 3], [4, 5, 6], [7, 8, 9=>['a','b'=>['c','d']]]];
     $arr = reduce($colum);
      var_dump($arr);
      function reduce($array) {
          $return = [];
          array_walk_recursive($array, function ($x,$index) use (&$return) {
              $return[] = $x;
          });
          return $return;
      }
    结果:
    array:11 [
      0 => 1
      1 => 2
      2 => 3
      3 => 4
      4 => 5
      5 => 6
      6 => 7
      7 => 8
      8 => "a"
      9 => "c"
      10 => "d"
    ]
    

    第二种方法使用递归:

    $colum = [[1, 2, 3], [4, 5, 6], [7, 8, 9=>['a','b'=>['c','d']]]];
     $arr = he($colum);
      var_dump($arr);
     public function he($arr,&$data){
            if (is_array($arr)){
                foreach($arr as $v){
                    if (is_array($v)){
                        $this->he($v,$data);
                    } else{
                        $data[] = $v;
                    }
                }
            }else{
                $data[] = $arr;
            }
        }
    结果:
    array:11 [
      0 => 1
      1 => 2
      2 => 3
      3 => 4
      4 => 5
      5 => 6
      6 => 7
      7 => 8
      8 => "a"
      9 => "c"
      10 => "d"
    ]
    
    展开全文
  • 点击【阅读原文】,可以查看 jsliang 更多文章~今日 LeetCode 题目解题放在公众号次条推送,小伙伴可以自行前往查看~ 目录 不折腾的前端,和咸鱼有什么区别...

    点击【阅读原文】,可以查看 jsliang 更多文章~

    今日 LeetCode 题目解题放在公众号次条推送,小伙伴可以自行前往查看~

    一 目录

    不折腾的前端,和咸鱼有什么区别

    目录
    一 目录
    二 前言
    三 二维降一维
    四 递归降维
    五 flat() 降维
    六 参考文献

    二 前言

    在业务场景或者刷 LeetCode 的时候,曾经碰到多次碰到一个问题:

    • 如何将二维甚至多维的数组转换成一维数组?

    讲起将多维转成一维,突然想起一个词叫做【降维打击】,下面将这种二维甚至多维的打成一维数组的方法,叫做【降维】

    这篇文章和你一起探讨下转换的方法~

    三 二维降一维

    我们先来个简单的:

    • 二维数组如何降级成一维数组?

    很多时候,我们的数组层次并没有那么深,只有个二维数组,所以我们可以了解下一些快捷的使用方法。

    reduce() 二维降一维

    const oldArr = [1, 2, [3, 4]];

    const newArr = oldArr.reduce((prev, curr) => (prev.concat(curr)), []);

    console.log(newArr);
    // [1, 2, 3, 4]

    concat() 二维将一维

    const oldArr = [1, 2, [3, 4]];

    const newArr = [].concat(...oldArr);
    const newnewArr = Array.prototype.concat.apply([], oldArr);

    console.log(newArr);
    // [1, 2, 3, 4]
    console.log(newnewArr);
    // [1, 2, 3, 4]

    flat() 二维降一维

    const oldArr = [1, 2, [3, 4]];

    const newArr = oldArr.flat();

    console.log(newArr);
    // [1, 2, 3, 4]

    四 递归降维

    既然二维降一维的小伙伴们看过之后,我们就可以进一步了解多维降一维数组了。

    我们先了解下通过递归降维。

    关于递归降维,这里有两个方法:

    • forEach 递归
    • reduce 递归

    下面一一分析:

    forEach 递归降维

    const oldArr = [
    1,
    [
    2, [3],
    [4, 5, 6],
    [7, 8, 9],
    10,
    11,
    ],
    12,
    13,
    14,
    [15, 16, 17],
    ];

    const newArr = [];

    const ergodic = (arr) => {
    arr.forEach((item) => {
    if (Array.isArray(item)) {
    ergodic(item);
    } else {
    newArr.push(item);
    }
    })
    }

    ergodic(oldArr, newArr);

    console.log(newArr);
    // [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ]

    Array.isArray() 用于确定传递的值是否是一个 Array,返回 true 或者 false

    在这个递归方法中,我们判断每一项是不是数组。

    如果是,则进一步递归,直到其不是为止。

    如果不是,则用新数组接收它。

    reduce 递归降维

    const oldArr = [
    1,
    [
    2, [3],
    [4, 5, 6],
    [7, 8, 9],
    10,
    11
    ],
    12,
    13,
    14,
    [15, 16, 17],
    ];

    const ergodic = (arr) => arr.reduce((prev, curr, index, list) => {
    if (Array.isArray(curr)) {
    return prev.concat(...ergodic(curr));
    }
    return prev.concat(curr);
    }, []);

    const newArr = ergodic(oldArr);

    console.log(newArr);
    // [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ]
    • 提问:请说出 reduce 对应的 4 个参数代表什么?

    五 flat() 降维

    flat() 是 ES6 提供的一个将嵌套的数组 “拉平” 的方法。

    flat 降维

    const oldArr = [
    1,
    [
    2, [3],
    [4, 5, 6],
    [7, 8, 9],
    10,
    11
    ],
    12,
    13,
    14,
    [15, 16, 17],
    ];

    const newArr = oldArr.flat(Infinity);

    console.log(newArr);
    // [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ]

    关于 flat(),更多的可以查阅 MDN

    • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

    或者查看 阮一峰 大佬的 ES6 讲解:

    • http://es6.ruanyifeng.com/?search=%E4%B8%80%E7%BB%B4&x=0&y=0#docs/array#%E6%95%B0%E7%BB%84%E5%AE%9E%E4%BE%8B%E7%9A%84-flat%EF%BC%8CflatMap

    这里大致讲下这个方法:

    • 入参

    arr.flat(depth)

    这个 depth 即拉平几层的意思,就好比:

    // 二维数组:默认拉平一层
    [1, 2, [3, 4, [5]]].flat();
    // [1, 2, 3, 4, [5]]

    // 四维数组:设置拉平两层
    [1, 2, [3, 4, [5, [6, 7]]]].flat(2);
    // [1, 2, 3, 4, 5, [6, 7]]

    // 设置拉平所有层
    [1, 2, [3, 4, [5]]].flat(Infinity);
    // [1, 2, 3, 4, 5]
    • 注意事项

    值得注意的是:使用 flat() 拉平数组过程中,会移除数组的空项:

    [1, 2, , 4, 5].flat();
    // [1, 2, 4, 5]
    • 扩展了解

    在你运用 flat() 自如的时候,不妨了解下它的同辈 flatMap()

    • 阮一峰 - flatMap:http://es6.ruanyifeng.com/?search=%E4%B8%80%E7%BB%B4&x=0&y=0#docs/array#%E6%95%B0%E7%BB%84%E5%AE%9E%E4%BE%8B%E7%9A%84-flat%EF%BC%8CflatMap
    • MDN - flatMap:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap

    flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。

    这里不一一介绍,感兴趣的可以了解下。

    flatMap() 使用

    const arr = [1, 2, 3, 4];

    arr.flatMap(x => x * 2);
    // [2, 4, 6, 8]

    arr.flatMap(x => [[x * 2]])
    // [[2], [4], [6], [8]]

    六 参考文献

    致敬在前端路上不断探索的大佬们,本篇文章参考自:

    1. 《JavaScript 学习笔记 - 多维数组变为一维数组》 - MADAO是不会开花的:
      https://juejin.im/post/5c9dd01ef265da612647d022
    2. 《es6--javascript数组降维,从es5分析到es6,(详解reduce方法)欢迎补充》 - 程序喵timy:
      https://blog.csdn.net/liuchao1987330/article/details/78903151
    3. 《数组实例的-flat,flatMap》 - 阮一峰:
      http://es6.ruanyifeng.com/?search=%E4%B8%80%E7%BB%B4&x=0&y=0#docs/array#%E6%95%B0%E7%BB%84%E5%AE%9E%E4%BE%8B%E7%9A%84-flat%EF%BC%8CflatMap
    4. 《Array.prototype.flat() - MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

    jsliang 广告推送:
    也许小伙伴想了解下云服务器
    或者小伙伴想买一台云服务器
    或者小伙伴需要续费云服务器
    欢迎咨询 jsliang

    jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
    基于https://github.com/LiangJunrong/document-library上的作品创作。
    本许可协议授权之外的使用权限可以从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处获得。
    展开全文
  • 主要介绍了PHP实现二维数组(或多维数组)转换成一维数组的常见方法,结合实例形式总结分析了PHP数组遍历、转换所涉及的array_reduce、array_walk_recursive及array_map函数常见使用技巧,需要的朋友可以参考下
  • 主要介绍了3个PHP多维数组转为一维数组的方法实例,分别使用foreach、for、while三种循环方法来实现,需要的朋友可以参考下
  • js基础代码实现
  • PHP 多维数组转为一维数组

    千次阅读 2019-03-20 13:57:00
    本文章中,主要展示了两种方法来实现任意多为数组转为一维数组的方法。一个是递归,一个是利用PHP内置函数。 先设定一个数组: $arr = [ 'a' => [ 'b' => ['c', 'd'], 'e' => ['f' => ['g'], 'h' ...
  • 多维数组转化为一维数组

    千次阅读 2020-09-11 10:38:05
    [1,[2,[3,[4,[5,6]]]]]转化为[1,2,3,4,5,6],当时看到后的第个反应是遍历然后递归。 方法:遍历递归 var newArr = [] function toOneArray(arr) { for(var i = 0; i< arr.length;i++){ if(Array.isArray...
  • function flatten(arr){// 多维menu数组 变成一维数组 return [].concat(...arr.map(item =>{ return item.children //判断是否有子项,否则会报错 ? [].concat(item, ...flatten(item.children)) : []....
  • 多维数组转一维数组 6种方法

    千次阅读 2018-08-13 14:21:25
    join+split var arr=[[1,2],3,[4,[5]]]; var arr1=arr.join().split(','); console.log(arr1);//[&amp;amp;amp;quot;1&amp;amp;amp;quot;, &amp;amp;amp;quot;2&amp;amp;...qu
  • js将多维数组变成一维数组

    千次阅读 2020-09-24 11:39:42
    一.js多维数组转换成一维数组 //1.递归:注意这个不兼容IE function arrReduce(someArr){ for(let i = 0;i< someArr.length;i++ ){ if(Array.isArray(someArr[i])){ arrReduce(someArr[i]); }else{ arrMax....
  • Python将二维数组/多维数组转换为一维

    万次阅读 多人点赞 2020-06-23 17:38:45
    Python将二维数组/多维数组转换为一维方法1:flatten方法2:reshape+concatenate方法3:sum()方法4:列表推导式方法5:operator方法6:itertools 方法1:flatten import numpy as np mulArrays = [[1,2,3],[4,5,6],[7,8,9]]...
  • 多维数组转一维数组(C)

    千次阅读 2017-11-28 15:14:27
    #include<stdlib.h>//二维数组转一维 /*以列为主的二维阵列要转为一维阵列时,是将二维阵列由上往下一列一列读入一维阵列,此时 索引的对应公式如下所示,其中row与column是二维阵列索引,loc表示对应的一维阵列索引...
  • Python将多维数组转换为一维

    千次阅读 2020-11-04 11:14:53
    分类专栏:Python文章标签:二维数组转一维 Python将二维数组/多维数组转换为一维 方法1:flatten 方法2:reshape+concatenate 方法3:sum() 方法4:列表推导式 方法5:operator 方法6:itertools 方法1:flatten ...
  • js把多维数组变成一维数组的方法

    千次阅读 2019-08-13 11:33:18
    一维数组 let ary = [1, [2, [3, [4, 5]]], 6]; let str = JSON.stringify(ary); 第0种处理:直接的调用 arr_flat = arr.flat(Infinity); Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维数组。该...
  • 在开发过程中遇到一个比较ip大小的情况,并且遇到了二维数组转为一维数组的情况,翻下资料,做下总结。 方法一:字符串法 该例子中,tempArr是一个多维数组,使用join将其转为字符串,在使用split方法转换为...
  • 下面小编就为大家分享一篇JavaScript实现一维数组转化为二维数组,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • JavaScript中如何将嵌套的数组"拉平"变成一维数组?这个功能在实际项目中,还是用到的比较多。实际项目中也遇到过,所以 今天就在这里做个总结,方便后续拓展~ 看到网上好多资料是通过join() / oString()方法结合...
  • 今天小编就为大家分享篇Python实现把多维数组展开成DataFrame,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • JS 将多维数组转换为一维数组

    千次阅读 2019-08-24 13:12:05
    取出嵌套数组的所有成员: function* iter(arr){ if(Array.isArray(arr)){ for(let i=0;i<arr.length;i++){ yield* iter(arr[i]); } } else{ yield arr; } } let arr=[1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,039
精华内容 26,415
关键字:

把多维数组转一维数组