2016-10-02 14 views
-1

콜백이있는 배열에서 다른 함수로 map 메소드를 사용하고 싶습니다. 모든 것이 정상적으로 작동하는 것 같지만, 결국 반환 값은 영향을받지 않습니다. 나는 그 문제가 무엇인지 모릅니다.자바 스크립트 -지도 및 콜백 - 반환 값은 영향을받지 않습니다.

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

예, 감사, 1 응답 작품,하지만'var에 최종 = arr.map (추가)를하고 return에 잊어 버렸 것 '만 배열에 추가하십시오. – 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

당신은 값이 다시

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)