2017-12-18 26 views
-2

配列の長さの合計を3と計算するコードを作成しようとしています。 各3つの整数はプロンプトからのものです。配列の合計を計算する

は今の私のコードは次のようなものです:

var num1 = prompt("First number"); 
var num2 = prompt("Second number"); 
var num3 = prompt("Third number"); 

var new_array = [num1, num2, num3] 

function sum_three(new_array) 
    { 
     return new_array[0] + new_array[1] + new_array[2]; 
    } 

document.write(sum_three(new_array)); 

私は結果を見たときにしかし、この

return new_array[0] + new_array[1] + new_array[2]; 

部分は、それだけの数字を連結計算していないようです。 私はどのように仕事をするのですか?

+3

整数に自分の番号を解析します。 – Nick

+1

さて、私はちょうど のような行を追加しました。var num1_int = parseInt(num1); var num2_int = parseInt(num2); var num3_int = parseInt(num3); それが働いた。しかし、私はコードを減らすことができる他の方法はありますか?彼らは長すぎると思う。 – kayak

+0

合計ではreduceを使用し、文字列から数値を取得するにはNumber()を使用します。 'let = arr.reduce((a、b)=> a + Number(b)、0);'。あなたのコード全体は次のとおりです: 'let res = new Array(3).fill()。reduce((a、b)=> a + Number(prompt(" Enter number "))、0); ' – baao

答えて

1

キーボードで入力した入力は文字列です。文字列に「追加」+を使用する場合は、それらを連結します。文字列に含まれる数字を実際のjavascript番号に変換(解析)する必要があります。

簡単な方法の1つは、各文字列変数の前に+を追加することです。 :それは実際には、正しい専門用語が「強制」、感謝@NeilDocherty、ここでは詳細https://github.com/getify/You-Dont-Know-JS/blob/master/types%20%26%20grammar/ch4.md)挙動を示す

簡単な例である番号

return +new_array[0] + +new_array[1] + +new_array[2]; 

として、あなたの文字列を「解釈」に最善のことをしようとしますあなたが使用することもでき

console.log("3" + "5"); // outputs 35 
 
console.log(+"3" + +"5"); // outputs 8

あなたがすでにしたように10。 parseIntが0としてそれを強要します+ながら、空の文字列をNaNを返します、特にparseInt vs unary plus - when to use which

は、例えば、この記事を参照して、両者の違いがあります。

+0

これは強要と呼ばれ、ここで読むことができます。https://github.com/getify/You-Dont-Know-JS/blob/master/types%20%26%20grammar/ch4.md –

+0

ありがとう!私はちょうど文字列をparseIntedし、それは働いた。 – kayak

+0

リンクありがとうございます! – kayak

0

より現代的な解決策は、Array.prototype.reduceメソッドを使用することです。

私はこれをより読み見つけていますが、IE9より古いブラウザをサポートしようとしている場合、あなたはそれをpolyfillする必要があります。

var new_array = [prompt("First number"), prompt("Second number"), prompt("Third number")]; 
 

 
function array_sum(accumulator, currentValue) { 
 
    return parseFloat(accumulator.toString()) + parseFloat(currentValue.toString()); 
 
} 
 

 
function sum_three(arr) { 
 
    return arr.reduce(array_sum); 
 
} 
 
document.write(sum_three(new_array));

関連する問題