在二维数组上使用Array.map

时间:2019-05-13 17:30:31

标签: javascript

因此,我有一个二维数组,并希望对数组中元素的每个元素使用“ 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()));

但是没有用。为什么?

1 个答案:

答案 0 :(得分:3)

您需要使用两个嵌套地图。

const randomBools = test.map(outer => outer.map(inner => randomBool()))

forEach通常旨在遍历每个项目,以执行某种副作用,而不会返回任何结果且不会更改原始数组。例如,将每个项目打印到控制台。

另一方面,

map旨在获取一个数组并返回一个相同大小的新数组,并以某种方式转换值,而不会使原始数组发生变化。例如,将列表中的所有单词都大写。

由于您要从现有的2维数组返回一个新的2维,并转换一些数据,因此需要嵌套地图函数。这将首先映射到行(外部),然后映射到列(内部)。内部地图的结果将被收集到外部地图中,您将得到一个带有新值的二维数组,所有这些都无需修改原始数组。