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