繁体   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