因此,我有一个二维数组,并希望对数组中元素的每个元素使用“ 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()));
但是没有用。为什么?
答案 0 :(得分:3)
您需要使用两个嵌套地图。
const randomBools = test.map(outer => outer.map(inner => randomBool()))
forEach
通常旨在遍历每个项目,以执行某种副作用,而不会返回任何结果且不会更改原始数组。例如,将每个项目打印到控制台。
map
旨在获取一个数组并返回一个相同大小的新数组,并以某种方式转换值,而不会使原始数组发生变化。例如,将列表中的所有单词都大写。
由于您要从现有的2维数组返回一个新的2维,并转换一些数据,因此需要嵌套地图函数。这将首先映射到行(外部),然后映射到列(内部)。内部地图的结果将被收集到外部地图中,您将得到一个带有新值的二维数组,所有这些都无需修改原始数组。