javascript - 在二维数组上使用 Array.map
问题描述
所以我有一个二维数组,想对数组中元素的每个元素使用“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
另一方面,它旨在获取一个数组并返回一个相同大小的新数组,其中值以某种方式转换,而不会改变原始数组。例如,将列表中的所有单词大写。
由于您想从现有的二维数组中返回一个新的二维数组并转换了一些数据,因此您需要嵌套地图函数。这将首先映射到行(外部),然后是列(内部)。内部映射的结果将被收集到外部映射中,您将得到一个包含新值的二维数组,所有这些都无需修改原始数组。
推荐阅读
- authentication - signUpUrl 返回空指针异常
- opencv - 如何计算未失真图像的分辨率?
- angular - 为什么 ngSwitch 没有按预期运行
- python - url在django中没有返回
- text - 如何将 UTF-8 中的文本限制为仅脚本字符?
- numpy - 找到连续元素之间差异的矢量化方法?也许是 np.diff() 的变体?
- c - 如何使用 CMOCKA 框架运行 c 单元测试用例?
- python - 如何在python中将分类列转换为整数列?(与 NaN)
- firebase - onAuthStateChanged Firebase 函数
- jenkins - Jenkins 启动并运行,但无法通过端口 8080 AWS ubuntu 上的浏览器访问