Javascript 将返回值传递回循环

Javascript 将返回值传递回循环,javascript,arrays,for-loop,nested,Javascript,Arrays,For Loop,Nested,我很不好意思问这个问题,但我是个新手,所以就这么说吧 我有一个整数数组,我想循环遍历它,并将每个整数除以另一个数组中的一个除数 integers = [50, 20, 18, 27, 19] divisors = [2, 3, 2] 循环整数并除以除数[0]。取结果数组,将每个整数除以除数[1]。取结果数组,将每个整数除以除数[2] 我知道这很简单,但我不知道如何将新数组作为参数传递 这是我到目前为止所拥有的。我需要得到一个长度为5的数组,但我得到的是15个数组中的一个 const divid

我很不好意思问这个问题,但我是个新手,所以就这么说吧

我有一个整数数组,我想循环遍历它,并将每个整数除以另一个数组中的一个除数

integers = [50, 20, 18, 27, 19]
divisors = [2, 3, 2]
循环整数并除以
除数[0]
。取结果数组,将每个整数除以除数[1]。取结果数组,将每个整数除以除数[2]

我知道这很简单,但我不知道如何将新数组作为参数传递

这是我到目前为止所拥有的。我需要得到一个长度为5的数组,但我得到的是15个数组中的一个

const divide = function(arr) {
var result = []
for (i = 0; i < divisors.length; i++) {
    for (j = 0; j < arr.length; j++) {
        result.push(Math.floor(arr[j] / divisors[i]))
        // how do I pass "result" as new value for "arr"?
    }
  }
  return result
}
console.log(divide(integers))
const divide=函数(arr){
var结果=[]
对于(i=0;i
就大O而言,我知道这不是解决这个问题的最有效的方法,因为结果是O(n^2)。但是,就像我说的,我是个新手


任何帮助都将不胜感激。谢谢。

您可以使用
Array.reduce()
迭代除数,并通过
Array返回一个新数组。映射上一个数组:

var整数=[50,20,18,27,19];
var除数=[2,3,2];
var结果=除数.reduce(函数(r,div){
返回r.map(函数(n){//将每个元素除以当前除数后的新数组
返回n/div;
});
},整数);//初始数组
控制台日志(结果)这在O(n+m)模式下工作和运行:

var整数=[50,20,18,27,19];
var除数=[2,3,2];
//计算所有除数的乘积
var乘积=除数。减少((x,y)=>x*y)
//将每个整数映射到除法结果,向下舍入
var result=integers.map(i=>Math.floor(i/product))

console.log(result)
我建议您使用一个快速代码: 首先使用嵌套的array.map()作为2D数组获得预期结果 第二次使用数组将2D数组展开为展开数组。reduce()
var整数=[50,20,18,27,19];
var除数=[2,3,2];
var结果=除数.map(x=>integers.map(y=>Math.floor(y/x)).reduce((a,b)=>a.concat(b));

控制台日志(结果)
显然,这可以通过
.map()
.reduce()
手动完成

var integers=[50,20,18,27,19],
除数=[2,3,2],
结果=整数.map(n=>除数.reduce((r,d)=>r/d,n));

控制台日志(结果)结果是浮点还是整数?如果是整数,那么在每次除法后,结果是否应该向下舍入?所有结果都返回到映射和减少。谢谢你,奥利!欢迎,但请看@fafl的简单而聪明的答案。这个解决方案中的大O是什么?它是O(n*m)-除数*整数@fafl是O(n+m),这要好得多。