2016-10-02 5 views
-1

コールバック付き配列のマップメソッドを別の関数に使用したいと思います。すべて正常に動作しているようですが、最後に戻り値は影響を受けません。私は何が問題であるかわからない。あなたは、コールバックからの値を返す必要がJavascript - マップとコールバック - 戻り値は影響を受けません

var arr=[4,5,3,2]; 

function multi (x,callback){ 
return callback(x*2); 
} 

function add(x){ 
// alert(x); when I'm alerting "x" here, it's value is multiplied as it should be 
return x+3; 

} 
var final=arr.map(function(a){multi(a,add); return a;}); 
final; // returns same values as Array "arr" 

答えて

2

あなたのコールバック関数は、それに渡されたものと同じ構成要素である、aを返します。したがって、結果は入力と同じです。

予想される出力を得るには、変更された結果を返す必要があります。

var final=arr.map(function(a){return multi(a,add);}); 
+0

はい、おかげで、第一の答え作品を値を忘れてしまったが、(追加) 'VAR最終= arr.mapをやっ;'しまうだけ配列に追加します。 – norbidrak

+0

@norbidrak:もちろん、私はちょうど精神的に '* 2 '部分を空白にしました。削除するよう編集します。 – Jon

1

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);
.as-console-wrapper { max-height: 100% !important; top: 0; }

2

あなたが戻ってreturn

var arr = [4, 5, 3, 2]; 
 

 
function multi(x, callback) { 
 
    return callback(x * 2); 
 
} 
 

 
function add(x) { 
 
    return x + 3; 
 

 
} 
 
var final = arr.map(function(a) { 
 
    return multi(a, add); 
 
}); 
 

 
console.log(final)

関連する問題