2017-01-29 20 views
0

私はJavascriptを使い慣れていないので、値を文字列に格納してから返す方法について興味があります。下の例では、2と8などの2つの数値が選択され、プログラムは2x1 = 2,2x2 = 4、..... 2x8 = 16までのすべての値を返します。これは、私が行ったようにprintステートメントを常にループさせることで可能ですが、どのようにしてすべての値をStringに格納してから文字列を返すことができるでしょうか。ループ文の代わりに文字列を返す

function showMultiples (num, numMultiples) 
{ 
for (i = 1; i < numMultiples; i++) 
    { 
    var result = num*i; 
    console.log(num + " x " + i + " = " + result+ "\n"); 
    } 
} 
console.log('showMultiples(2,8) returns: ' + showMultiples(2,8)); 
console.log('showMultiples(3,2) returns: ' + showMultiples(3,2)); 
console.log('showMultiples(5,4) returns: ' + showMultiples(5,4)); 
+2

あなたはJavaScriptに新しく追加されたとして、私はあなたのためのヒントをHAVA:**必ず** 'var'を使用しています。 'i = 1;'のようなものを書くことによって変数を宣言すると、変数は通常は望ましくないグローバルスコープに保存されます。 – Aloso

+0

ありがとう、私はそれを関数で宣言したので、ローカル変数になると思っていました。今私は知っている。 – user7218356

答えて

1

function showMultiples(num, numMultiples) { 
 
    // the accumulator (should be initialized to empty string) 
 
    var str = ""; 
 
    for (i = 1; i < numMultiples; i++) { 
 
    var result = num * i; 
 
    // use += to append to str instead of overriding it 
 
    str += num + " x " + i + " = " + result + "\n"; 
 
    } 
 
    // return the result str 
 
    return str; 
 
} 
 

 
var mulOf5 = showMultiples(5, 10); 
 

 
console.log("multiples of 5 are:\n" + mulOf5);

オペレータ+=は、左のオペランドの以前の値に値(右オペランド)を追加し、後に結果を格納します。したがって、これらの2行は同じです:

str = str + someValue; 
str += someValue; 
0

あなただけの文字列の連結を使用することができます。

var finalResult = "" 
...in your loop... 
finalResult += num + " x " + i + " = " + result+ "\n" 

多くの場合、あなたはまた、単にアレイでの結果を収集し、それらを追加するjoinを使用することができます。

var lines = []; 
... in your loop: 
lines.push(num + " x " + i + " = " + result); 
... afterwards 
console.log(lines.join("\n")); 
0

テンプレート文字列にバッククォートを使用してES6構文を使用する場合は、以下を使用できます。これはもう少し読みやすく、正確にはどこにあっても便利です(JavaScriptを使用している場合はどこでもES6を使用できる限り)。

function showMultiples(num, numMultiples){ 
 
    let result = ''; 
 

 
    for(let i = 1; i < numMultiples; i++){ 
 
    result += `${num} x ${i} = ${i * num}\n`; 
 
    }; 
 

 
    return result; 
 
} 
 

 
console.log(showMultiples(2,8));

関連する問題