javascript - 使用递归检查元素是否为数组
问题描述
我想检查数组中的元素是否是另一个数组。我正在解决一个代码挑战,其中问题是遍历数组并检查 7,但如果元素是数组,我想连续检查每个嵌套数组是否有 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!'
解决方案
您可以将布尔值作为结果并Array#some
用于检查数组。
function hasSeven(array) {
function seven(a) {
return a.includes(7) || a.some(v => Array.isArray(v) && seven(v));
}
return seven(array)
? 'Boom!'
: 'There is no 7';
}
console.log(hasSeven([7]));
console.log(hasSeven([[7]]));
console.log(hasSeven([[[7]]]));
console.log(hasSeven([]));
console.log(hasSeven([[]]));
console.log(hasSeven([[[]]]));
推荐阅读
- python - 比较单个数据框中两行的数据
- ruby-on-rails - 如何在rails上的ruby中单击按钮在数据库中插入记录
- php - 使用 PHP 变量 / REST API Confluence 更新页面
- php - 如何从数组中输出值?
- css - 背景视频在 safari 和 firefox 上晃动
- python - 如何从百分比变化时间序列构建指数?
- swift - MKLocalSearch 结果的唯一 ID?
- android - 应用程序找不到特定用户的 sqlite 表
- geometry - 删除模型的内部几何图形
- mysql - 错误代码:1055。SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列