javascript - javascript中的递归forEach()
问题描述
我有一堆数字数组,例如:
let a = [1,2,3];
let b = [4,5,7];
let c = [11,13,17]
我想创建一个函数,告诉我数组中的数字组合乘以不同数组中的数字会得到某个数字。以下是我到目前为止的代码:
// to get which combination of numbers result to 165
a.forEach(x=>{
b.forEach(y=>{
c.forEach(z=>{
if(x*y*z==165){
console.log(x,y,z)
}
})
})
})
我想创建一个函数,它可以输入一个数字数组的数组,例如:[[1,2],[2,5,],[7,11],[13,17]]
并返回数字组合,当它们相乘时,可以得到一个特定的数字。
解决方案
这是一个递归函数,它接受输入数字和数字数组的数组。它通过第一个数字数组进行处理,找到任何可能的除数,如果是,则使用除法输入和数组的余额递归调用自己,以查看该对值中是否有任何除数。如果是这样,则将它们附加到当前除数以产生结果:
const findDivisors = (num, arrs) => {
let result = [];
if (arrs.length == 1) {
return arrs[0].filter(n => n == num);
}
arrs[0].forEach(n => {
if (num % n === 0) {
findDivisors(num / n, arrs.slice(1)).forEach(r => result.push([n].concat(r)));
}
});
return result;
}
let a = [1, 2, 3];
let b = [4, 5, 7];
let c = [11, 13, 17];
console.log(findDivisors(165, [a, b, c]));
console.log(findDivisors(136, [a, b, c]));
推荐阅读
- date - 如何绘制图表和正确的日期刻度?
- swift - 在 Swift 线程中限制 CPU 使用率
- javascript - 如何阻止 ajax 回调函数处理来自服务器的 res.redirect() 响应
- javascript - 用数组数据的javascript数组填充html表?
- javascript - php 主动导航栏与 php
- android - 如何获取类型化数组中项目的索引?
- python - 在不终止进程的情况下中止 Python 进程中的代码执行
- amazon-ecs - Fluentbit 从 AWS ECS 解析日志
- c# - 从 app.config 在 MVC .net core 3.1 中配置 Trace
- .net - 从 CosmosDB 连接字符串解析端点 Uri