簡體   English   中英

在二維數組上使用Array.map

[英]Use Array.map on an 2-dimensional Array

因此,我有一個二維數組,並希望對數組中元素的每個元素使用“ randomBool”函數。

“ randomBool”函數僅返回一個隨機布爾值:

const randomBool = () => Boolean(Math.round(Math.random()));

這將是我將輸入的二維數組:

var test = [
    ["just","some","random","text"],
    [1412,"test",1278391]
]

在for循環中嵌套了一個工作的for循環:

for (let el of test){
    for(let i in el){
        el[i] = randomBool();
    }
}

我嘗試了這個:

test.forEach(el => el.map(el2 => randomBool()));

但這沒有用。 為什么?

您需要使用兩個嵌套地圖。

const randomBools = test.map(outer => outer.map(inner => randomBool()))

forEach通常旨在遍歷每個項目,以執行某種副作用,而不會返回任何內容且不會更改原始數組。 例如,將每個項目打印到控制台。

另一方面, map旨在獲取一個數組並返回一個相同大小的新數組,並以某種方式轉換值,而不會使原始數組發生變化。 例如,將列表中的所有單詞都大寫。

由於您要從現有的2維數組返回一個新的2維,並轉換一些數據,因此您需要嵌套地圖函數。 這將首先映射到行(外部),然后映射到列(內部)。 內部地圖的結果將被收集到外部地圖中,您將剩下一個帶有新值的二維數組,所有這些都無需修改原始數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM