【问题标题】:Creating a function using callback使用回调创建函数
【发布时间】:2015-09-22 04:26:20
【问题描述】:

我试图通过解决这个问题来了解回调函数如何正常工作:

完成以下合并函数,使其行为为 在下面的例子中描述。合并应该采用两个数组 长度相同的数字和回调函数。

var merge = function(array1, array2, callback){  
  //your code here.
}

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

//x should now equal [6, 8, 10, 12].

现在,使用你的合并函数来完成定义的 euclid 函数 以下。 Euclid 应该取两个数组,每个数组都有一个相等的 数值元素的数量,并返回欧几里得距离 它们之间。为了快速复习欧几里得距离是什么, 看这里

var euclid = function(coords1, coords2){  
  //Your code here.
  //You should not use any loops and should
  //instead use your original merge function.
}

var x = euclid([1.2, 3.67], [2.0, 4.4]);

//x should now equal approximately 1.08.

我可以在没有回调的情况下做到这一点,但最终我想知道如何使用回调作为参数来完成这样的功能。

【问题讨论】:

  • 在顶部代码中,您可以输入callback(v1, v2) 之类的内容来调用提供的函数function(a, b){...}
  • 几天前Callback that didn't need parameters - why? 提出了与此几乎相同的问题。这一定是某种家庭作业。看起来这是来源:codewars.com/kumite/…
  • 这是来自个人的博客。不是我的作业。

标签: javascript math callback


【解决方案1】:

给你..

var merge = function(array1, array2, callback) {
  var result = [];
  if (array1.length === array2.length) {
    while (array1.length > 0) {
      result.push(callback.call(null, array1.shift(), array2.shift()));
    }
  }
  return result;
}

var euclid = function(coords1, coords2) {
  var x = merge(coords1, coords2, function(a, b) {
    return a - b;
  })
  return Math.sqrt(Math.pow(x[0], 2) + Math.pow(x[1], 2));
}

console.log(euclid([1.2, 3.67], [2.0, 4.4]));

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 2021-01-13
  • 2023-03-22
相关资源
最近更新 更多