Javascript - map 和 callback - 返回值不受影响
Javascript - map 和 callback - 返回值不受影响
我想在数组上使用map方法,并通过回调函数调用另一个函数。一切似乎工作正常,但最后返回的值没有受到影响。我不知道问题出在哪里。
var arr=[4,5,3,2]; function multi (x,callback){ return callback(x*2); } function add(x){ // alert(x); 当我在这里弹出警告"x"时,它的值被正确地乘以2 return x+3; } var final=arr.map(function(a){multi(a,add); return a;}); final; // 返回与数组"arr"相同的值
当我们在使用`map`方法时,传入的回调函数是`multi(a, add)`。在`multi`函数中,它接受一个参数`x`和一个回调函数`callback`,并将`x`乘以2作为参数传递给回调函数。在这种情况下,回调函数是`add`函数。
问题出在我们没有在回调函数中返回值。因此,`map`方法返回的结果数组中的每个元素都是`undefined`,而不是我们期望的`x`加上3的结果。
要解决这个问题,我们需要在回调函数中添加`return`语句,将计算的结果返回。修改后的代码如下:
function multi(x, callback) { return callback(x * 2); } function add(x) { return x + 3; } var arr = [4, 5, 3, 2], final = arr.map(function (a) { return multi(a, add); }); console.log(final);
输出结果将会是`[11, 13, 9, 7]`,每个元素都是原始数组中的元素乘以2再加上3的结果。