【BizRobo！】配列を使った集計

# １．事の始まり
javascriptの配列を使えば、１つの変数で複数、集計管理できると風のうわさで聞いた。

使いこなせるかどうかは別として、自分の引き出しを増やすため
学習し、ここに残す。

:::note warn
javascript初心者のため、誤った解釈が含まれている可能性があります。
利用の際は十分ご注意ください。

:::


## ２．お題
ラーメンの試食会を開催。
複数の味を提供し、好みの味に○を１つ以上つけてもらい
その結果をExcelにまとめた。

味別の集計結果を算出したい。
![画像01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/9b7cd5b8-5f1b-9780-98bb-c588e11c3f45.jpeg)




## ３．作成イメージ
1行ずつ、項目を取得。
javascriptの配列を使い、
1つの変数にみそ,しお,しょうゆ,とんこつの順で
「X,X,X,X」のように集計する。




## ４．対応内容

##### ①変数用意
・array
➡「X,X,X,X」で集計するため
・array_number
➡,区切りが表示される数を設定
・種別１
・種別２
・種別３
・種別４
➡○を取得
・読込元ファイルパス
➡用意したExcelのパス設定
・excel
➡excelデータ格納用

##### ②コード用意

##### 「0,0,0,0」の形を作りたいので、以下を設定

```ruby:BizRobo！用コード
>>var array = [];

for (var i = 0; i < << + array_number + >>; i++) {
    array.push(0);
}
OUTPUT = array

<<
```

コード的には以下の状態

![画像03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/9232dba0-0ab6-957b-283f-83457dd40749.jpeg)


5つ目の,以降の数字を増やしたい場合は　「< 4;」の数字部分を変更
開始の数値を0以外にしたい場合は　「push(0)」の数字部分を変更



##### 各集計結果を加算したいので、以下を設定


```ruby:BizRobo！用コード
>>var array = [<< + array +>>];
<< +(種別1!="" ? "array[0] = (array[0]+1)":"array[0] = array[0]") +>>;
<< +(種別2!="" ? "array[1] = (array[1]+1)":"array[1] = array[1]") +>>;
<< +(種別3!="" ? "array[2] = (array[2]+1)":"array[2] = array[2]") +>>;
<< +(種別4!="" ? "array[3] = (array[3]+1)":"array[3] = array[3]") +>>;
OUTPUT = array
<<
```

コード的には以下の状態

![画像08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/a446b4bf-6bc9-af68-6327-bf22ebefa193.jpeg)
※if文により、array１～３は加算無しのように見えますが、対象行の場合は加算されるようになっています。
　また、ループ中のコード抽出のため、1行目［1,0,0,4］になっています。


##### ③フロー作成

ファイル読込
![_画像09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/4df2694c-37fa-7bb1-6664-68b93b12430c.jpeg)

変数を開く
![_画像10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/6fc28551-ab2e-b578-ac34-ca577e31b4bf.jpeg)

変数の割当
※事前に変数設定で数値持たせた場合、省略も可
![_画像11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/0c09362a-d205-61bd-9e1c-b7cabddce614.jpeg)

変数の割当（JavaScriptを使用して変換）
![_画像12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/e7e7bb6b-0a84-c288-1939-eda1841afac8.jpeg)

Excel内ループ
![_画像13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/6d249959-dd16-73af-3713-c5513965f249.jpeg)

セル値抽出
（種別１～４は取得対象列、格納先程度の違いであるため省略）
![_画像14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/7afa43d9-f8a0-8364-a461-cc445d7e2e0c.jpeg)

変数の割当（JavaScriptを使用して変換）
![_画像15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/70c8879f-c637-96fc-189e-cbe2a29d1248.jpeg)


## ５．結果　
　　　　➡出来た

1回目
![_画像15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/c9a606fd-7837-178e-fe96-c71f34885ad1.jpeg)

6ループ目

![画像07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/57181cc0-7faa-7549-7ccc-f8e556bf5519.jpeg)





最終ループ数

![_画像16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523511/e666808f-88a2-1d99-3780-68a2f6293446.jpeg)

（Excel上でも計算し、合計が合っていることを確認。）

## ６．まとめ

countifでクリアできるお題だったため
そこまでの達成感は得られませんでしたが
今後のロボット開発に活かせるときがくるかも！？　な感じでした。

2次元配列もあるそうで、次回はそちらに挑戦してみたいと思っています。