はじめよう Kintone APIの第6回 テーブルの値を利用するに関連しての質問です。
「カテゴリ別の集計を算出する」 のセクションにおいて、new Array()で配列を作ったあと、テーブルから「カテゴリ」「個数」「単価」の情報を引っ張って来て集計しているというのは分かるのですが、
subTotals[category] += price * number;
何故このコードでプログラムが成立するのかが理解出来ません。
何故理解出来ないかと言うと、この時点でsubTotals[category]の中にあるのは、このサンプルの場合は「パン」と「その他」という値だけの様に思えるため、そこに”price * number"で出てくる数値を代入していくだけで何故合計値が出てくるのかが理解出来ないのです。
Developer Networkの過去のトピックや、JavaScript自体の記事も色々と読んだのですが、どうしても理解出来ません。
お手数ですが、ご教示頂ければと思います。
YT さん
元記事が2014年と古く、また誤りもあるようです。
カテゴリ別に集計するには、subTotals を配列ではなく、オブジェクトで定義します。
誤
var subTotals = new Array();
正
var subTotals = {};
ただし subTotals が配列でも、キーを指定して代入するとオブジェクトとして扱われるようです。
その辺は、JavaScript の割といい加減なところですね。
オブジェクトを使った集計の動きは下記のようになります。
subTotals[category] = 0;
subTotals[category] += price * number;
カテゴリが"パン"の場合、パンをキーとして数値を代入しています。
subTotals[“パン”] = 0;
subTotals[“パン”] += price * number;
subTotals の内容は下記のようになります。
subTotals : {
“パン”: (price * number)の計算累計
}
rex0220様
ご返信ありがとうございます。
subTotalsをオブジェクトと考えると理解出来ました。
subTotals[category] = 0として、そこに数値を代入しているんですね。
ずっと悩んでいた部分が解決しました、ありがとうございます。
ご返信誠にありがとうございました。