詳解js陣列扁平化

2022-05-09 23:02:56 字數 1572 閱讀 4134

例子:

.concat(1,2,3,4,5,[6,7])
.concat(...arr)
這樣寫就相當於把陣列打碎了。比如把[1,2,3,4,5,[6,7]]打碎成1,2,3,4,5,[6,7]

然後呼叫.concat(1,2,3,4,5,[6,7])結果就是[1, 2, 3, 4, 5, 6, 7]

這個是為了扁平化的專門的函式,可以扁平化自定義層的的陣列,語法如下

var newarray = arr.flat([depth]);
depth是指定的深度,預設為1

例如:

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

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

如果是多層的話,

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

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

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

自然想到的就是遞迴了,遞迴需要乙個終點,這個終點就是下面的hasarray(),如果這個陣列裡面的項不存在array物件,都是基本資料的話,就返回false。否則返回true

// 判斷陣列裡面還有陣列嗎。(終點判定)

function hasarray(arr)

} return false

}// 扁平化乙個深度為一層陣列

function paiping(arr)

// 扁平化n層深度的陣列

function paiping2(arr)else

}

可以簡化一下:簡潔的一批,是吧,不解釋了,對照著上面看就好了。

function fn(arr)

} return arr

}

無論你的陣列多深,只要你tostring一下,他們的結構就沒有了。

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

console.log(arr.tostring()) // "1,2,3,4,5,6"

這時候我們針對這個字串,用split分隔一下逗號,生成乙個單個字串陣列。

let arr1 = arr.tostring().split(',') //  ["1", "2", "3", "4", "5", "6"
我們現在只需要遍歷一下,把他轉化成數字就行了。

let arrnum = arr1.map((val) => )

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

js 陣列扁平化

陣列扁平化是指將乙個多維陣列變為一維陣列 遍歷陣列arr,若arr i 為陣列則遞迴遍歷,直至arr i 不為陣列然後與之前的結果concat 遍歷陣列每一項,若值為陣列則遞迴遍歷,否則concat。function flatten arr 1,2,3,4,5 1,2,3,4,5 2.1.reduc...

js陣列扁平化

所謂陣列扁平化,就是將乙個二維或多維陣列轉換為一維陣列。比如將 1,2 3,4,5 轉化為 1,2,3,4,5 1 首先想到設定乙個空陣列,如果原陣列中的每一項不是陣列,直接push進去,如果是陣列,就與這個空陣列進行連線 實現 let flatarr arr else return result ...

JS 陣列扁平化

假如有乙個陣列 var arr 1,2,3,4 我們怎麼能把arr變成 1,2,3,4 呢?即讓多維陣列降維,轉換為只有一層的陣列。1.迴圈陣列 遞迴 function flatten arr else return result flatten arr 1,2,3,4 var arr 1 2,3,...