使用回调创建函数

时间:2015-09-22 04:26:20

标签: javascript math callback

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

  

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

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].
  

现在,使用您的merge函数来完成定义的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.

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

1 个答案:

答案 0 :(得分: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]));