這一篇應該說是掃盲吧,或者說給自己的無知長個記性???
一開始聽到數組扁平化,這形容詞真讓我懵逼了一下。我是真沒想到降維那裏去,最後瞭解了一下
扁平化就是將多維數組轉換爲一維數組:
[1,[2,3,[4,[5,6]]]]
↓
[1,2,3,4,5,6]
轉換的方法:
flat()
flat() 方法會按照一個可指定的深度遞歸遍歷數組,並將所有元素與遍歷到的子數組中的元素合併爲一個新數組返回。
說白了就是遍歷數組中每一個元素,最後再合併成一個新的數組
let a=[1,[2,3,[4,[5,6]]]];
let b=a.flat(3);
console.log(b);//[1, 2, 3, 4, 5, 6]
對於未知維度的數組就可以使用正無窮
Javascript中,超出 1.7976931348623157E+103088 的數值即爲Infinity,小於 -1.7976931348623157E+103088 的數值爲無窮小。
let a=[1,[2,3,[4,[5,6]]]];
let b=a.flat(Infinity);
console.log(b);//[1, 2, 3, 4, 5, 6]
偷偷說無論已知還是未知維度我都是用infinity,效率是一樣的
flat也可以去除數組空項:
let a=[1,[2,3,[4,[5,6]]],,];
let b=a.flat(Infinity);
console.log(b);//[1, 2, 3, 4, 5, 6]
數組空項很少出現,但還是要記一下(是去除空項不是空字符串哦)
還有一個不得不說在渡一教育看到的一道題:
在一個二維數組中,每一個一維數組長度相同,每一行按照從左到右順序遞增,每一列按照從上往下順序遞增。請完成一個函數輸入一個這樣的二維數組,和一個整數,判斷數組中是否含有該整數
說明白點就是檢索一個二維數組是否包含某一個元素。。。但當時我不明白的是:每一行按照從左到右順序遞增,每一列按照從上往下順序遞增
百度了一下就是:
let ary=[
[1,2,3,4],
[2,3,4,5],
[3,4,5,6]
]
顯而易見。。我是真沒想到那裏去。。。我還以爲很深奧。。。。。