JS實現陣列的隨機 以及陣列扁平化

2022-09-10 05:03:13 字數 1297 閱讀 1030

記錄一下今天面試的演算法題 乙個是實現陣列的打亂輸出,要求做到概率相同,還有乙個是陣列的扁平化,自己只想到了array.flat 還有array.isarray 其實還有別的方法 這裡做一下總結

function random(a, b) 

[...arr].sort(random)

實際上這種方法並不能真正的隨機打亂陣列,每個元素有很大機率還在它原來的位置附近出現。

// 1. 初始化原始陣列和新陣列,原始陣列長度為n(已知);

// 2. 從還沒處理的陣列(假如還剩k個)中,隨機產生乙個[0, k)之間的數字p(假設陣列從0開始);

// 3. 從剩下的k個數中把第p個數取出;

// 4. 重複步驟2和3直到數字全部取完;

// 5. 從步驟3取出的數字序列便是乙個打亂了的數列。

function shuffle1(arr)

return res

}console.log(shuffle1([1,2,3,4,5]));

// 1. 建立乙個陣列大小為 n 的陣列 arr,分別存放 1 到 n 的數值;

// 2. 生成乙個從 0 到 n - 1 的隨機數 x;

// 3. 輸出 arr 下標為 x 的數值,即為第乙個隨機數;

// 4. 將 arr 的尾元素和下標為 x 的元素互換;

// 5. 同2,生成乙個從 0 到 n - 2 的隨機數 x;

// 6. 輸出 arr 下標為 x 的數值,為第二個隨機數;

// 7. 將 arr 的倒數第二個元素和下標為 x 的元素互換;

// ……

// 如上,直到輸出 m 個數為止

function shuffle2(arr)

return res

}

some() 方法用於檢測陣列中的元素是否滿足指定條件(函式提供)。

some() 方法會依次執行陣列的每個元素: 如果有乙個元素滿足條件,則表示式返回true , 剩餘的元素不會再執行檢測。

如果沒有滿足條件的元素,則返回false。

注意: some() 不會對空陣列進行檢測。

注意: some() 不會改變原始陣列。

function fn(arr) 

return arr

}

function myflat() else}}

fn(this);

return aarr;

}

js 實現陣列扁平化

什麼是陣列扁平化?陣列扁平化就是將乙個多維陣列轉換為乙個一維陣列首先讓我們思考乙個這樣的題目 假如有乙個陣列 var arr 1,2,3,4 我們怎麼能把arr變成 1,2,3,4 呢?即讓多維陣列降維,轉換為只有一層的陣列 如果用過lodash的話,我們知道 flatten 和 flattende...

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 ...