多維數(shù)組轉一維數(shù)組

法一:使用數(shù)組map()方法,對數(shù)組中的每一項運行給定函數(shù),返回每次函數(shù)調(diào)用的結果組成的數(shù)組。

```

var arr = [1,[2,[[3,4],5],6]];function unid(arr){

? ? ? ? var arr1 = (arr + '').split(',');//將數(shù)組轉字符串后再以逗號分隔轉為數(shù)組var arr2 = arr1.map(function(x){

? ? ? ? ? ? return Number(x);

? ? ? ? });

? ? ? ? return arr2;

}

console.log(unid(arra));

```

法二:使用apply結合concat,缺點是只能將二維轉一維,多維數(shù)組則不對了。

```

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

console.log([].concat.apply([],arr));

```

法三:將數(shù)組轉為字符串再轉為數(shù)組,缺點是數(shù)組中每項成字符串了

```

var arr = [1,[2,[[3,4],5],6]];

var arr2 = arr.join(',').split(',');

console.log(arr2);//["1", "2", "3", "4", "5", "6"]

```

//或

```

var c=[1,3,4,5,[6,[0,1,5],9],[2,5,[1,5]],[5]];

console.log(c.toString().split(','))

```

法四:遞歸

```

var arr = [1,[2,[[3,4],5],6]]; var newArr = [];

? ? function fun(arr){

? ? ? ? for(vari=0;i

? ? ? ? ? ? if(Array.isArray(arr[i])){

? ? ? ? ? ? ? ? fun(arr[i]);

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? newArr.push(arr[i]);

? ? ? ? ? ? }

? ? ? ? }

? ? }

fun(arr);

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

```

法五:reduce+遞歸

```

use strict';

? ? var arr = [1,[2,[[3,4],5],6]];

? ? const flatten = arr => arr.reduce(

? ? ? ? ? ? (acc,val) => acc.concat(Array.isArray(val)? flatten(val):val),[]

? ? )

? ? console.log(flatten(arr));//[1, 2, 3, 4, 5, 6]

```


作者:haoxl

出版:http://www.cnblogs.com/haoxl/

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容