2017-12-04 6 views
-2

にundefinedを返します:が、私はJavaScriptに新しいですし、私はreturn文を理解するのに苦労していた出力

function solution(number){ 
 
    var newarray = [] 
 
    for (var i = 0 ; i < number - 1 ; i++) { 
 
     if (i % 3 === 0) { 
 
      newarray.push(number[i]); 
 
     } else if (i % 5 === 0) { 
 
      newarray.push(number[i]); 
 
     } else { 
 
      newarray 
 
     } 
 
     } 
 
     return newarray 
 
    } 
 
    
 
    console.log(solution(10));

このソリューションでは、内の値を持つ配列を返しているが、それらはすべて未定義です。これはなぜですか?どのような本質的な概念が私が逃しているのですか?入力として渡さ

+3

'番号[i]は'?数は配列ではなく数であるようです。つまり、最後のelseは不要です(構文的には間違っています)。また、最初の2つのifは 'if(i%3 === 0 || i%5 === 0)'で凝縮することができます。彼らが同じことをしている限り(そうであるように思われる)、それらを凝縮させてもよい。さらに、数字-1では、あなたのケースでは0から8までアナログしています。それが意図されているかどうかはわかりません。 – briosheje

+0

は '.push(i)'にする必要があります。 – Endless

+0

私は過去の日に文字列を分割しています。ありがとう! – monkeybanana

答えて

0

変更それはあなたがnewArrayにのみiをプッシュする必要があります。 iは既にNumberです。

また、関数内number変数はprimitiveなくobjectまたはarrayあるので、それはiの値に対応する性質を持っていないので、そのためnumber[i]はあなたにundefinedを与えます。

また、最後のelseは何もしないので必須ではありません。

function solution(number){ 
var newarray = [] 
for (var i = 0 ; i < number - 1 ; i++) { 
    if (i % 3 === 0) { 
     newarray.push(i); 
    } else if (i % 5 === 0) { 
     newarray.push(i); 
    } 
    } 
    return newarray 
} 

solution(10);//returns [0, 3, 5, 6] 
0

数は、あなたが実際にundefinedある数のi番目の位置にアクセスしているように、10

あなたは、[i]の数として、forループで番号にアクセスしています。

newarray.push(i); 
+0

なぜ答え-1を説明してもらえますか? –

0
function solution(number){ 
var newarray = [] 
for (var i = 0 ; i < number - 1 ; i++) { 
    if (i % 3 === 0) { 
     newarray.push(i); 
    } else if (i % 5 === 0) { 
     newarray.push(i); 
    } else { 
     newarray 
    } 
    } 
return newarray; 
} 

console.log(solution(10)); 
関連する問題