2017-02-01 1 views
0

に新しい番号を返す私は「アレイ」内の各要素を、配列、changeArrayを返すようにしたい+ 2はJavaScript array.forEach(())-iterate、変化や新しい配列

空の "changeArray"

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

 
function changeArray(array){ 
 
    var newNums = []; 
 
    array.forEach(function(number){ 
 
    number = number + 2; 
 
    console.log(number); 
 
    //return(newNums); 
 
    });return(newNums); 
 
}changeArray(array);

あなたの偉大な答えを

みんなありがとう。彼らは本当に助けます。私は.forEachを使用し、新しい配列を "返す"ことが期待されていました。私は.mapが最高になることに同意するが、...ありがとう!

+2

newNumsには何も入れません。戻り値はメソッドではありません – epascarello

答えて

5

Array.mapはあなたが本当にforEachなどから戻ることができないため、コードが動作しない理由は、あるそのジョブ

var array = [1, 2, 3, 4]; 
 
    
 
var newNums = array.map(x => x + 2); 
 

 
console.log(newNums);


のための適切なツールになります各繰り返しで配列にプッシュする必要があります。

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

 
function changeArray(array) { 
 
    var newNums = []; 
 
    
 
    array.forEach(function(number) { 
 
    newNums.push(number + 2); 
 
    }); 
 
    
 
    return newNums; 
 
} 
 

 
var result = changeArray(array); 
 

 
console.log(result);

+1

なぜコードが機能しないのか、なぜforEach'コールバックの中の戻り値が効果がないのかを説明するとさらに良いでしょう。 –

+0

あなたはそれを釘付けにしました!私は単にあなたの最後の2行を削除し、関数を呼び出しました。新しい配列が返されました。感謝万円! –

+0

私は、この答えの2つの提案のどれがそれを釘付けにしたかはわかりません。しかし、最初のものは 'map'で、明らかに優れたテクニックです。 2番目は、あなたの試行で何がうまくいかなかったのか、それを修正する方法を示すためのものです。しかし、 'map'は明らかにこの仕事のための正しい道具です。 –

0

このタスクのための適切な機能は確かに.map()です。

でも、あなたの関数を変更して使用することはできます。すべての

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

 
    function changeArray(inputArray){ 
 
     var newNums = inputArray.slice(); 
 
     newNums.forEach(function(number, index){ 
 
     newNums[index] = number + 2; 
 
     }); 
 
    return(newNums); 
 
    } 
 
console.log(changeArray(array));

説明

まず、あなたは常に空の配列を返すようにchangeArray()をコード化されました。

var newNums = [];、次にreturn(newNums);を参照してください。

に対してforEach()を使用している間。

第2に、forEach()hereについて詳しく読む必要があります。

ご存知のように、inputArrayの値をnewNumsにコピーするには、.slice()を使用します。

inputArrayがこの機能によって変更されていないことを確認することは、まあまあ良いことです。

+0

このコードは 'array'のシャドーイングのために、もっと混乱します。そのパラメータが別の名前を持っていれば分かります...もちろん、他の答えが指摘しているように、 'map'はこの仕事のための正しいツールです。 –

+0

@ScottSauyetを指摘していただきありがとうございます。 –

関連する問題