2017-02-04 5 views
0

配列の各要素に適用し、新しい配列を返す関数マップを取得しようとしています。なぜこれが動作していないのですか?マップ関数上のJavascript、非常に短い

function addTwo(num) 
{ 
return num+2; 
} 

function map(array, callback) 
{ 
    var new=[]; 
    for(var i=0;i<arr.length;i++) 
    { 
    new.push(callback(array[i])); 
    } 
} 
var arr=[2,4,6,8];    
console.log(map(arr, addTwo)); 
+2

コンソールにエラーが表示されますか?問題1 - 'new'は予約されたキーワードです - 問題2 - あなたの仕事を簡単にするために組み込みの配列メソッドを使用していない、問題3 - あなたのマップ関数は配列を作成し、それにプッシュし、あなたは新しい配列*を返すことを望んでいると言っていますが、あなたの関数は何も返しません...自明な問題があるでしょう –

+0

次回は、あなたが持っている問題を説明してください。作業。 – Carcigenicate

+0

'function map'を投げ捨てると、' console.log(arr.map(addTwo)) 'はあなたが望むものを正確に実行します –

答えて

0

私はあなたが間違っていた場所を学ぶ必要があると思いますので、ここでは2つのエラーで書き換えあなたのコードが指摘しています - newは予約キーワードである、あなたはvarはnewと呼ばれることはできません - あなたがしたいと言いますあなたのマップ関数は、何かを返すように、あなたはreturn何か!

function addTwo(num) { 
    return num+2; 
} 

function map(array, callback) { 
    var ret=[]; // use a non-reserved name for the array 
    for(var i=0; i<arr.length; i++) { 
     ret.push(callback(array[i])); 
    } 
    return ret; // if you want to return it, then return it 
} 
var arr=[2,4,6,8];    
console.log(map(arr, addTwo)); 
0

内蔵Array.prototype.map次のように使用します。

function addTwo(num) { 
 
    return num + 2; 
 
} 
 

 

 
var array = [1, 7, 5, 4]; 
 

 
console.log(array.map(addTwo));

注:あなたのコード全体のコードは1行で行うこと(このようarrow functionsを使用して:

var array = [1, 7, 5, 4]; 
 

 
var newArray = array.map(n => n + 2); 
 

 
console.log(newArray);

関連する問題