function reduceArray($array) {
$return = [];
array_walk_recursive($array,
function ($x) use (&$return)
{ $return[] = $x; }
);
return $return;
}
-
2019-04-30 17:59:00
转载于:https://www.cnblogs.com/beili/p/10797485.html
更多相关内容 -
多维数组变成一维数组
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()方法,只降一次维,
-
PHP实现多维数组转字符串和多维数组转一维数组的方法
2020-12-19 14:35:39本文实例讲述了PHP实现多维数组转字符串和多维数组转一维数组的方法。分享给大家供大家参考。具体实现方法如下: /** * @method 多维数组转字符串 * @param type $array ...* @method 多维数组变成一维数组 * @s -
python numpy 一维数组转变为多维数组的实例
2020-12-23 21:44:44以上这篇python numpy 一维数组转变为多维数组的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python二维列表一维列表的互相转换实例Python的... -
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....一.js多维数组转换成一维数组
//1.递归:注意这个不兼容IEfunction arrReduce(someArr){ for(let i = 0;i< someArr.length;i++ ){ if(Array.isArray(someArr[i])){ arrReduce(someArr[i]); }else{ arrMax.push(someArr[i]); } } } let content = [1,2,3,4,5,[6,7,[8,9,10,[11,12,13]]]]; let arrMax = [];//存放转换数组元素 arrReduce(content); console.log(arrMax);
----------------------------------------------------------------------------------------------------------------------------------------------------------
//2.reduce方法let arr1 = [1,[2,[[3,4],5],6,7,[8,9,[10,11,[12,13]]]]]; const flatten1 = arr1 => arr1.reduce((acc,val) => acc.concat(Array.isArray(val)? flatten1(val):val),[],) console.log(flatten1(arr1));
//3.数组的join()
let arr1 = [1,[2,[[3,4],5],6,7,[8,9,[10,11,[12,13]]]]], newArray = new Array(); //输入的一维数组全是number类型 for(let item of arr1.join().split(",")){ newArray.push(Number(item)); } console.log(newArray);
//4.toString
let arrPol = [1,[2,[[3,4],5],6,7,[8,9,[10,11,[12,13]]]]], newArray = new Array(); for(let item of arrPol.toString().split(',')){ newArray.push(Number(item)); } console.log(newArray);
//5.空字符串''
let arrKol = [1,[2,[[3,4],5],6,7,[8,9,[10,11,[12,13]]]]]; let newArr = []; for(let item of (arrKol + '').split(',')){ newArr.push(Number(item)); } console.log(newArr);
//6.ES6的flat(n): n非必填项,n默认是1,表示扁平化深度.
//默认转化成一维 console.log([1,[2,[[3,4],5],6,7,[8,9,[10,11,[12,13]]]]].flat()); // [1,2,3,3,4,5,6,7,8,9,10,11,12,13] // 指定转换的嵌套层数 console.log([1,[2,[[3,4],5],6,7,[8,9,[10,11,[12,13]]]]].flat(2)); //[1, 2, Array(2), 5, 6, 7, 8, 9, Array(3)] // 不管嵌套多少层 console.log([1,[2,[[3,4],5],6,7,[8,9,[10,11,[12,13]]]]].flat(Infinity)); // [1,2,3,3,4,5,6,7,8,9,10,11,12,13] // 自动跳过空位 console.log([1, [2, , 3, ,4]].flat()); // [1, 2, 3, 4]
总结:
这些都是综合比较得来的,实现办法太多了,还有map(),reduce()+递归,es6新增的扩展运算符,flatMap()...前端本身就是一个在寻求更加完美的解决过程,而不是满足于某一种方式实现,我们追求近乎完美的过程中提升自我,寻找平衡。
参考来源:
-
flat()方法将多维数组变为一维数组,扁平化数组
2022-04-02 17:06:19将二维数组转换为一维数组。 flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。 flat除了有扁平化嵌套数组之外还可以扁平化空项。 实例,将一个二维数组...flat()
将二维数组转换为一维数组。
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。 flat除了有扁平化嵌套数组之外还可以扁平化空项。实例,将一个二维数组转换为一维数组:
let arr=[1,2,[3,4],[5,8],9]; let arrnew=arr.flat(); console.log(arrnew); //输出结果:[1, 2, 3, 4, 5, 8, 9]
实例,使用Infinity将多层次深度数组转换为一维数组
let arr=[1,2,[3,['a','b'],4],[5,8],9]; let arrnew=arr.flat(Infinity); console.log(arrnew); //[1, 2, 3, 'a', 'b', 4, 5, 8, 9]
-
PHP多维数组转一维数组的简单实现方法
2020-12-18 14:46:19本文实例讲述了PHP多维数组转一维数组的简单实现方法。分享给大家供大家参考,具体如下: php语言本身没有将多维数组转为一维数组的函数,但是我们可以自己写一个php函数来实现将多维转一维的功能。 运用了递归,... -
JS简单的用递归使多维数组变为一维数组
2021-06-15 11:14:00var arr= [[1,2,3,[4,5]],6] var arr1 = [] function OneD(arr) { for(var i = 0;i<arr.length;i++){ if(arr[i] instanceof Array){ OneD(arr[i]) }else{ arr1.push(arr[i]) } } ... On -
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2020-10-17 12:28:36今天小编就为大家分享一篇关于js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 -
PHP 多维数组转为一维数组
2019-03-20 13:57:00本文章中,主要展示了两种方法来实现任意多为数组转为一维数组的方法。一个是递归,一个是利用PHP内置函数。 先设定一个数组: $arr = [ 'a' => [ 'b' => ['c', 'd'], 'e' => ['f' => ['g'], 'h' ... -
数组-----扁平化(多维数组变为一维数组)
2020-11-03 09:12:54数组扁平化问题: var arr = [2, [3, 4], [5, [6,7], 8], 9, 0] 输出为[2,3,4,5,6,7,8,9,0] 方法1: 利用for-in的遍历机制,和递归调用 var newArr = [] function f(arr){ for(val of arr){ // console.log(val,... -
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($... -
利用递归把多维数组转为一维数组的函数
2020-12-17 18:49:36函数名称:array_multi2single 函数原形:array array_multi2single(array) 实现功能:把一个多维数组的数值存放到一维数组中,不保存Key。 <?php function array_multi2single($array) { static $result_array=... -
多维数组转一维数组的方式
2021-10-19 20:23:19第一种方式使用字符串的方式 // 此种方法如果是数字类型的话 转换为了字符串 let tempArr = [1, [2, 3], [4, 5, [6, 7]]]; let result_str1 = tempArr.join(',').split(','); console.log(result_str1); // ["1",... -
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2020-10-15 21:58:03主要介绍了PHP实现二维数组(或多维数组)转换成一维数组的常见方法,结合实例形式总结分析了PHP数组遍历、转换所涉及的array_reduce、array_walk_recursive及array_map函数常见使用技巧,需要的朋友可以参考下 -
PHP 将多维数组转为一维数组
2019-11-28 22:51:59一、使用foreach,递归 代码如下:<?php function arr_foreach ($arr) { static $tmp=array(); if (!is_array ($arr)) { return false; } foreach ($arr as $val ) ... -
es6将二维多维数组转化为一维数组
2022-04-22 17:23:461. Array.prototype.flat() 用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。 const abc = [1, 2, [3, 4,]] console.log(abc.flat()) // [ 1, 2 ,3 ,4 ] 2. 不传参数时,... -
js 多维数组转一维数组
2022-02-07 22:27:35方法一 var arr = [1, [2,[0,[9,7,4],9], 3,[4, 5, 6]]] var newArr = [] newArr=arr.toString().split(',') console.log(newArr); toString方法 把数组转为字符串 split方法,把字符串按照指定的符号进行... -
python 多维数组转一维数组
2021-11-20 12:56:55二维转一维数组的方法很多,使用numpy ,sum 好多方法可以实现。 例如: arr = [[1,2,3],[4,5,6]] # 方法一 print([item for i in arr for item in i]) # 方法二 from functools import reduce print(reduce(lambdax... -
3个PHP多维数组转为一维数组的方法实例
2021-03-23 17:56:00很多时候我们需要将多维数组转成一维数组,因为我们只需要一维数组,而且一维数组使用起来更方便,在PHP中如何将多维数组转成一维数组?下面我们来看看三个多维数组转为一维数组例子:一、使用foreachfunction arr_... -
es6方法:多维数组转一维数组
2021-08-26 13:01:58方法:flat();可接受参数2,3,4.....,Infinity; 用法如下: const a = [1, 2, 3, 4, 3];... // 不传默认是二维数组降一维数组 console.log(a.concat(b).flat()); // 打印为[1, 2, 3, 4, 3, 3, 4, 5 -
关于js二维数组和多维数组的定义声明(详解)
2020-11-23 01:08:26声明一维数组:var goodsArr = []; 赋值:goodsArr[0] = ‘First Value’; 这个毫无争议,因为平时使用PHP比较多,而php语法是可以直接使用goodsArr[0] = ‘First Value’; 这种方法声明数组并赋值的,但js不能这样... -
js多维数组转一维数组
2021-06-16 09:44:01js基础代码实现 -
多维数组转一维数组,并去重, 排序
2020-08-05 23:36:13// 多维数组转一维数组,并去重, 排序 let arr = [1, 12, 3, [6, 5, 4], [8, 9, [7, 10, [11, 2]]], 1, 3, 5, 4] console.log(arr) // ES6中提供了array.flat()方法 // 可以将多维数组转为一维数组 // ()内默认值... -
Python 实现取多维数组第n维的前几位
2020-09-18 09:42:38今天小编就为大家分享一篇Python 实现取多维数组第n维的前几位,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
将多维数组转化为一维数组
2022-02-20 16:01:59例如:[1, [2], [3, [4, [5]]]] ===>[1, 2, 3, 4, 5] const array = [1, [2], [3, [4, [5]]]]; function flat(array) { let arr = array.concat().join(',').split(','); let newArr=[];... -
JavaScript多维数组变为一维数组的方法
2020-11-16 21:47:29JavaScript必会知识 ...本篇文章主要总结了,如何将多维数组变为一维数组的方法 一、递归的方法 function f(arr){ var result = []; for (var i =0,len = arr.length;i<len;i++){ if(Array.isArray