日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js多维数组扁平化

發布時間:2023/12/9 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js多维数组扁平化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數組扁平化,就是將多維數組碾平為一維數組,方便使用。

一:例如,一個二維數組?var arr = ['a', ['b', 2], ['c', 3, 'x']],將其扁平化:

1. ?通過 apply 借用數組的 concat 方法:

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

結果如下:

jQuery 中的 map 方法就用到了這個技巧。

但如果直接調用 concat 方法,[].concat(arr),就沒有扁平化效果。

?

2.?擴展運算符(...)

[].concat(...arr)

?

3. reduce(ES5新增的數組方法):

[['a'], ['b', 2], ['c', 3, 'x']].reduce((a, b) => a.concat(b), []);

?

二:對于三維及以上的數組:

1. 數組每一項都是簡單類型,如數字:

var arr = [[1], [[2, 3], [4]], 5, 6];
arr.toString().split(',').map(item => +item);

?

2. 遞歸:

1 var flatten = function(arr) { 2 var isArray = function(arr) { 3 return Array.isArray(arr) || Object.prototype.toString.call(arr) === '[object Array]'; 4 }, 5 ret = [], 6 item; 7 8 if (!isArray(arr)) { 9 return; 10 } 11 12 for (var i = 0; i < arr.length; i++) { 13 item = arr[i]; 14 if (isArray(item)) { 15 ret = ret.concat(flatten(item)); 16 } else { 17 ret.push(item); 18 } 19 } 20 21 return ret; 22 }; 23 24 flatten( [ 'a', [[[['b', 2]]]], ['c', [3, 'x']] ] );

該方法對任意維數組都有效。

?

三:flat (ES6方法)

flat(Infinity) 可將任意維數組轉成一維數組

轉載于:https://www.cnblogs.com/caihg/p/6519422.html

總結

以上是生活随笔為你收集整理的js多维数组扁平化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。