array.flat()用於將巢狀的陣列「拉平」,變成一維的陣列。該方法返回乙個新陣列,對原資料沒有影響。
var arr =[,
[,[,
]]]//flat()預設只會「拉平」一層,拉平多層可以將flat()方法的引數寫成乙個整數,表示想要拉平的層數。
arr.
flat()
;// => 拉平一層[,
,[,]
]//如果不管有多少層巢狀,都要轉成一維陣列,可以用infinity關鍵字作為引數。
arr.
flat
(infinity);
// => 不管多少層,都要轉成一維陣列[,
,,]
array.flatmap()方法對原陣列的每個成員執行乙個函式,然後對返回值組成的陣列執行flat()方法。該方法返回乙個新陣列,不改變原陣列。
// 相當於 [[2, 4], [3, 6], [4, 8]].flat()[2
,3,4
].flatmap
((x)
=>
[x, x *2]
);// => [2, 4, 3, 6, 4, 8]
//flatmap()只能展開一層陣列。
// 相當於 [[[2]], [[4]], [[6]], [[8]]].flat()[1
,2,3
,4].
flatmap
(x =>
[[x *2]
]);// => [[2], [4], [6], [8]]
//上面**中,遍歷函式返回的是乙個雙層的陣列,但是預設只能展開一層,因此flatmap()返回的還是乙個巢狀陣列。
//flatmap()方法的引數是乙個遍歷函式,該函式可以接受三個引數,分別是當前陣列成員、當前陣列成員的位置(從零開始)、原陣列。
多維陣列 「 拉平 「 實現一維陣列
背景 前兩天專案中遇到個問題,通過雙層map迴圈 await請求資料最終得到了乙個二維陣列,但是實際我想要的是二維陣列裡的那些物件,需要構建成乙個一維陣列 因為我要通過v for去迴圈顯示 資料 當然了,二維陣列轉一維陣列的方法其實有很多,但是當多維 三維 四維等 呢?難不成迴圈 遞迴嗎?所以我就在...
多維陣列變一維陣列
判斷是否是陣列 let isarr arr arr instanceof array 判斷是否一維陣列 let istdim arr arr.reduce o1,o2 o1 isarr o2 true 多維陣列變一維陣列function name return a console.log name ...
一維陣列變多維陣列
1.雙層filter過濾 第一層 item 定義為father newarr接收 第一層過濾出最頂層陣列 判斷 brancharr的長度 存在father.children brancharr 否則為空 return father.pid 0 第二層 item 定義為child brancharr接...