2016-12-14 8 views
1

私は整数の配列を与えられており、各整数とそのフォロワーの平均で新しい配列を作成したいと思います。これを達成するために、map関数を使用しようとしました。私はこれが動作していることを信じていmap関数からundefinedを返しました - コードウォー

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

arr.map(function(a, b){ 
    return (a + b/2); 
}); 

、私は期待どおりに動作コンソールのすべてでこれを実行しているかのように、しかし問題は、チャレンジが設定されている場所、それは未定義戻りつつあるということです。 challenge is set here。私が行方不明の何か愚かなことはありますか?

答えて

2

Array#mapのコールバックパラメータを使用できます。これは、要素自体、インデックス、および配列への参照です。その後、結果を変数に代入して最初の要素をスキップします。必要な要素がもう1つ増えるためです。

var arr = [1, 2, 3, 4], 
 
    result = arr.map(function(a, i, aa) { 
 
     return (aa[i - 1] + a)/2; 
 
    }); 
 

 
result.shift(); 
 
console.log(result);

より多くのあなたの試みをマッピングしArray#reduceのもう一つの可能​​な解決策、。基本的な解決策は、反復であるかもしれない

var arr = [1, 2, 3, 4], 
 
    result = []; 
 

 
arr.reduce(function(a, b) { 
 
    result.push((a + b)/2); 
 
    return b; 
 
}); 
 

 
console.log(result);

+0

感謝をフィルタリングする必要があります!良い解決策 –

0

foo = function(arr){ 
    var result=[]; 
    for(var i=0; i<arr.length-1; i++) { 
    result.push((arr[i]+arr[i+1])/2) 
    } 
    return result; 
} 
+0

答えに構文エラーがあります。 THOにお返事いただきありがとうございます:-) –

+0

ありがとうございます。セミコロンはコンマの代わりに使用してください。)) – marmeladze

0

あなたは(マップを理解する)または(減らす)または@nina

関連する問題