2

私の開発クラスの宿題に取り組んでいます。私の問題の一部では、多次元配列(2D)を作成し、ネストされた各配列から2番目の要素の合計を取得する必要があります。どうすればこれを達成できますか?これが私の配列です:

var studentGrades = [['Bob', 85], ['Jim', 76], ['Steve', 92], ['Sue', 83], ['Liz', 65], ['Jack', 77], ['Jo', 96], ['Tim', 80], ['Mike', 53], ['John', 81]];

すべての数字を足し合わせる必要があります。それらのインデックスが[1]であることはわかっていますが、これらを足し合わせるためのコードの書き方がわかりません。

4

5 に答える 5

2

for ループ (項目) で何かを行い、変数を for ループの外にi置く必要があります。countこれは数値であるため、インデックス1 をカウントとして使用するよりも。

これは、宿題を進めるのに役立つはずです。

より詳しい情報

  1. ループ用
于 2013-02-01T19:21:21.173 に答える
1
var sum = 0;
for(var x=0; x<arr.length; x++)
    sum += arr[x][1];

2番目のインデックスは常に1になりますが、2つのインデックスブラケットを使用するだけです。多次元配列はギザギザになる可能性があり、2次元のサイズが固定されていないため、これは安全ではありません。

var sum = 0;
for(var x=0; x<arr.length; x++)
    if(arr[x].length >= 2)
        sum += arr[x][1];

反復ごとに内部配列の長さのチェックを追加するのがより安全なルートです。

于 2013-02-01T19:19:51.187 に答える
1

ECMAScript5Array.prototype.reduceを使用して配列をその合計に減らします。

var sum = studentGrades.reduce(function(sum, pair) {
    return sum + pair[1];
}, 0);

ECMAScript6のアロー関数で装飾すると、

var sum = studentGrades.reduce((sum, pair) => sum + pair[1], 0);
于 2014-11-24T19:01:36.790 に答える
0

二次元配列は単なる配列の配列です。それらをよりよく理解するまで、アクセス方法のグリッドを書き出すことをお勧めします。たとえば、配列 a には、それぞれが保持する 3 つの要素と、2 つの要素の配列 (b と呼びます) があります。インデックスは次のようになります

a0b0 a0b1 
a1b0 a1b1
a2b0 a2b1

そしてあなたの場合、それは

[['Bob', 85],
['Jim', 76],
['Steve', 92]]

したがって、Jim の成績を取得するには、インデックス テーブルを参照すると、a1b1 となり、studentGrades [1][1] に変換されます。2 次元配列を反復処理するには、行、列の順に処理します

for(var row = 0; row < a.length; row++){
    var b = a[row];
    for(var column = 0; column < b.length; column++){
        var accesingByRowAndColumn = a[row][column];
        var accesingByColumn = b[column];
    }
}

あなたがただ学んでいるだけなら、解決策を生み出すためにたくさんのコードを一緒にフランケンシュタインすることはお勧めしません。長期的には自分自身を傷つけるだけです. 問題と、問題を解決するためのツールを理解します。私は、ある問題が本のコード例からわずかな調整を必要とする場合、彼らはびっくりしてその方法を理解できないという人を指導しました。

于 2013-02-01T19:57:06.817 に答える
0

Alasql JavaScript ライブラリでそれを行うことができます。

var res = alasql('SELECT VALUE SUM([1]) FROM ?',[studentGrades]);

jsFiddle でこの例を試してください。

于 2014-12-18T14:17:30.653 に答える