javascript - 我试图通过编写回调来使 "merge function"工作。

标签 javascript function callback add indices

我认为我对回调的理解还很幼稚。但这是到目前为止的情况,我的功能只是将每个数组中的第一个索引加在一起。

var merge = function(array1, array2, callback){  
  for (var i = 0; i < array1.length; i++) {
   return array1[i] + array2[i];
  };
  callback(array1[i] + array2[i]);
};

var x = merge([1, 2, 3, 4], [5, 6, 7, 8], function(a, b){  
  return a + b;
});
console.log(x);

最佳答案

当您使用回调时,您的代码流现在是通过回调而不是返回和变量赋值。我在您的代码中看到混合用法,我不清楚您的代码试图做什么。 for 循环内的 return 将在调用回调之前终止合并函数。

我可能会调整你的代码:

var merge = function(array1, array2, callback){  
  var result = [];
  for (var i = 0; i < array1.length; i++) {
   result[i] = array1[i] + array2[i];
  };
  callback(result);
};

var x = merge([1, 2, 3, 4], [5, 6, 7, 8], function(merged) {
    console.log(merged);
});

这会将此结果记录到控制台:

[6, 8, 10, 12]

为了更进一步,我还会在 for 循环中使用 Math.max(array1.length, array2.length) 来确保结果数组是long 作为最长的输入数组。那里有点复杂,但我想指出一个潜在的问题。

关于javascript - 我试图通过编写回调来使 "merge function"工作。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30715826/

相关文章:

javascript - 在所有现代浏览器上检测缩放级别

javascript - Nodemailer OAuth2 2LO 在 Heroku 部署中失败

javascript - Phonegap 无法在 Android 模拟器上运行(未找到 index.html)

javascript - 空字符串 ("") 如何在 Javascript 中调用函数?

c++实现定时回调函数

java - 如何为mockito设置模拟对象方法调用的回调?

javascript - this.style.display = 无; Google Chrome 中的问题 - HTML5

javascript - 复制不带属性的函数引用

c++ - 虚函数重定义隐藏了另一个基类的同名重载函数

php - 如何获取运行时确定的可调用参数的数量?