【发布时间】:2021-11-19 22:54:14
【问题描述】:
我想检查一个数组中的元素是否是另一个数组。我正在解决一个代码挑战,其中问题是遍历数组并检查 7 但如果 element 是一个数组,我想连续检查每个嵌套数组是否有 7。
我的第一个'if'语句中有console.log(),并且我看到sevenBoom() 被多次调用。但由于某种原因,它没有返回“Boom!”
SevenBoom 应该返回“Boom!”如果有七。
function sevenBoom(arr) {
if (arr.includes(7)) {
return "Boom!";
}
arr.forEach((val) => {
if (Array.isArray(val)) sevenBoom(val);
});
}
sevenBoom([1, 3, 4, 6, [7]) // Returns undefined
sevenBoom([3, 7, 8, 9]) // Returns 'Boom!'
【问题讨论】:
-
您能否将一些示例输入作为minimal reproducible example 添加到您的问题中。
-
sevenBoom正在返回一些东西;那么为什么忽略forEach中的返回值呢?你为什么使用forEach无论如何都会忽略返回值?请改用some。 -
或者只是做 flat(),但你的问题是你永远不会从 forEach 返回,而在这种情况下使用 forEach 确实是错误的。
-
对于没有
7值的数组,您期望什么返回值? -
@NinaScholz 哦,我只是要添加一个 else 语句,返回一个带有“没有 7”的字符串。就是这样。
标签: javascript arrays recursion