要不要進來看下陣列降維?(陣列拍平)

2021-10-25 11:26:12 字數 944 閱讀 7968

陣列可能有多維,有時候我們希望把多維陣列降為一維陣列,這種情況下用遞迴的方法進行降維,也可通過es6的陣列原型方法flat進行降維。下面給出相關實現:

1. 何為多維陣列?

[1,2,3] //這是以為陣列

[1,2,[3,4]] //這是二維

…簡單來說,就是陣列套陣列的最高層數

[1,[2,4], [4,3,[4,5]]] 這個最高的是套了三層,那就是三維

2. 遞迴須知

1、確定遞迴條件

2、確定終止條件

let tmp = ;

function flat_1(arr) else

});}flat_1(arr)

這時tmp便是已經一維陣列

3、利用reduce進行遞迴降維
function flat_1(arr) 

return pre.concat(cur) //終止條件

}, )

}flat_1(arr)

這時便會返回已經降維的陣列

flat()方法建立乙個新陣列,其中所有子陣列元素都以遞迴方式連線到該陣列中,直到達到指定的深度 – mdn

該方法只有乙個引數depth,用於指定巢狀陣列結構應展平的深度級別。預設為1

簡單來說就是,flat(2)可以拍平二維陣列,flat(3)可以拍平3維陣列,flat(n)可以拍平n維陣列,如果你不知道陣列是幾維,中間的維數可以定位無限大,即infinityflat(infinity)

拍平任意維陣列:

arr.flat(infinity)

Excel要不要「引」

雙引號在excel公式中無處不在,我們有必要了解它的用法。一 什麼時候需要加 1 表示空字元。if a1 a1 10 意思是如果a1的值為空,則顯示空白,否則返回a1 10 2 字串 表示文字,在公式中文字兩邊都需要加雙引號。countif a a,abc 意思是統計a列的為 abc 的個數。3 日...

要不要冗餘字段

這個問題我糾結了老長時間,至今仍未想明白。但是與其萬馬齊喑不如胡說八道。如果使用者表新增計數字段,好處在於用空間換時間,查詢速度肯定快多了 如果追求簡潔無冗餘,好處在於清晰易懂,寫 不蔓不枝,特別漂亮。如果不設計冗餘字段,也慢不了多少,建立完外來鍵或者索引之後查詢速度會提公升很多。如果覺得這麼整寫s...

要不要造輪子?

在it界,有一句很經典的話 不要重複造輪子!我們要敏捷開發,快速迭代。這句話意思是說在已有技術可以解決需求的前提下我們不需要再重新實現乙個模組來實現功能,哪怕這個技術是第三方的。在當下,網際網路產品迭代更新的階段,公司業務需求變更頻繁,編碼與搬磚無異,這句話被很多人奉為圭臬,甚至是很多人 指導思想 ...