我试图通过解决这个问题来理解回调函数如何正常工作:
完成以下合并功能,使其行为如下 在下面的例子中描述。合并应该采用两个数组 相同长度的数字和回调函数。
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.
我能够在没有回调的情况下做到这一点,但最终我想知道如何使用回调作为参数来完成这样的函数。
答案 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]));