[英]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.