2017-03-15 5 views
1

助けてください、私はあまりにも長い間答えを探しています。
は、私はあなただけで上記の初期化の数字の配列の10までの位置010に番号
0を挿入するためにプッシュ方式を使用してアレイを作成しようとしています。Newbie to Javascript:配列内の特定の数値を集計する方法

私はこれでした:その後、私は印刷することにより、アレイのプッシュ方式をテストするために午前

[ 0 ] 
[ 0, 1 ] 
[ 0, 1, 2 ] 
[ 0, 1, 2, 3 ] 
[ 0, 1, 2, 3, 4 ] 
[ 0, 1, 2, 3, 4, 5 ] 
[ 0, 1, 2, 3, 4, 5, 6 ] 
[ 0, 1, 2, 3, 4, 5, 6, 7 ] 
[ 0, 1, 2, 3, 4, 5, 6, 7, 8 ] 
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] 
0 

var numbers = []; 
for(var i = 0; i < 10; i++) { 
    numbers.push(i); 
    console.log(numbers); 

をそして、私は100%確かに正しいですが、ないと思うこの結果を、得ました配列の の位置36の値の合計(コンソールに印刷するにはconsole.log()関数を使用します)。 出力値は9である必要があります。

私はこの時点で非常に固執しており、これを達成する方法のどこにでもサンプルを見つけることができません。

console.log(numbers(sum[3, 6]); 
+2

「console.log(numbers [3] + numbers [6])」のように、単に '3'と' 6'の位置に要素を追加してください。 –

答えて

-1

それは次のようになります:通常console.log((+numbers[3]) + (+numbers[6]));

、それはconsole.log(numbers[3] + numbers[6]);する必要がありますが、余分な+記号は、そのJavaScriptを伝える36の代わりに、9その結果問題が時々あります私はそれのようなものかもしれないと思いましたそれは数字です。

注:最初の番号はnumbers[0]です。配列は0で始まります!

+0

ありがとうございました![0] [0,1] [0,1,2] [0,1,2,3] [0、1、2、3] [0、1、 [0,1,2,3,4,5] [0,1,2,3,4,5,6] [0,1,2,3,4,5,6,7] [0,1,2,3,4,5] 3,4,5,6,7,8] [0,1,2,3,4,5,6,7,8,9] 0それはうまくいくように見えますか? –

0

あなたは合計()関数を持つようにしたい場合は、以下を試してみてください。

function sum(x, y) { 
    return x + y; 
} 

console.log(sum(numbers[3], numbers[6])); 

ここでフィドルです:https://jsfiddle.net/7181h1ok/

0

配列の2つの指標の値を合計するには、使用以下の方法で+加算演算子:注意点としては

var numbers = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]; 
var sum = numbers[3] + numbers[6]; //adds the value in index 3 of the numbers array to the value in index 6 of the numbers array. 
console.log(sum); //prints the sum to the console. 

、あなたがJavaScriptと/またはそれらの運営者に慣れていない場合には、有用な文書がありますw3schoolsで始めることができます。

+0

はい、私はw3shcolsサイトにいました。多くのサイトを実際に見て、私が達成しようとしていたもののサンプルを見つけることができませんでした。配列内のすべての数値を合計するには、コマンドはどのように変更されますか? –

+0

@AjaLee配列のすべての内容を合計する関数は、値が0の変数(たとえば、 'out')を作成し、配列を反復し、以前に作成した変数に各要素を追加してから、その変数。 これは次のようになります。 'function sumArray(numArray){var out = 0; for(var i = 0; i GameGibu

0

まずは、少しでも良いスタイルにあなたのコードを変換してみましょう:

const numbers = []; 
 
for (let i = 0; i < 10; i++) { 
 
    numbers.push(i); 
 
    console.log(numbers); 
 
}

注:あなたがそれを変更しないので、私は、代わりにvarnumbersconstを作りました。私はvarの代わりにiletバインディングを作った。一般的に、varは遺産であり、決して使用すべきではありません。代わりにconstを使用してください。そうでない場合はletを使用してください。

また、forキーワードの後に​​スペースを挿入しました。通常、制御構造キーワード(ifwhileforなど)のヘッダーを囲む括弧をスペースで区切って、関数呼び出しの引数リストの括弧と視覚的に区別されるようにすることをお勧めします。立つ瀬がない。

第2回:結果はではなく、となります。 (ヒント:0から10までの数字はいくつですか?)0から10の数字を含める必要がありますが、0から9の数字だけが含まれています。という別のエラーがあります。。これらのエラーは、ループインデックスを手動で管理しようとするときに非常に一般的です。これは修正です:

const numbers = []; 
 
for (let i = 0; i <= 10; i++) { 
 
//     ↑ 
 
    numbers.push(i); 
 
    console.log(numbers); 
 
}

最近のほとんどのプログラミング言語は、イテレータ、地図、ひだのような高レベルの抽象化の形で、手動でループインデックスを扱うよりも良い選択肢を持っています。残念ながら、ECMAScriptにはRangeデータ型がありません。そうでない場合は、RangeArrayに変換すると簡単に表現できます。

のECMAScript Rangeデータ型を持っていなかった場合、それは例えばは、これらの1のようになります。ここでは

const numbers = Range(0, 10).toArray() 
const numbers = Array.from(Range(0, 10)) 

は、ループを管理し、手動含まないnumbersArrayを作成するための代替手段です0から10は11の数字であることが分かっている必要があります。

const numbers = Array.from({length: 11}, (_, i) => i)

あなたはインデックス3と6で番号を追加したい場合は、あなたは単にインデックス3と6間接参照し、その結果を追加することができます。

console.log(numbers[3] + numbers[6])

をコメントでは、 Arrayにすべての数字をどのように追加するか尋ねました。二項演算子を使用してコレクションの要素を組み合わせfoldまたはreduceと呼ばれ、ECMAScript supports it out-of-the-box

console.log(numbers.reduce((acc, el) => acc + el));

注明示的なループ、ループインデックスのこのよう明示的な管理は存在しない方法。ここでoff-by-one-errorを作ることは単に不可能です。