【kintone】for-ofやforEachでテーブルの値を覗いてみる

こんにちは！
3～4年くらい前に「for」は時代遅れだ！
forじゃなくてmapメソッドを使いましょう！

なんてことを言い聞かされて、
プログラマーXX歳定年説みたいなのをなんとなく意識してしまったことのあるジュリドン（当時事務職）です。

今日は、そんなforの仲間、for-ofを紹介しつつ、
配列で使えるforEachメソッドも使って、
テーブルのフィールドの値を取得してみたいと思います。

# for-ofとは
オブジェクトのなかから1つずつ値をとってきて処理できる繰り返し文です。
こんな感じで使います。

```js

for(const x of オブジェクト){
   console.log(x);
}
```

## for-ofの使い方1
突然ですが、for-ofを試しに使ってみたいと思います。
たとえばこんなオブジェクトがあったときを考えましょう・・・

```js

const lunch = [
    {名前:"ひめ", セット:"A", デザート:"チョコ"},
    {名前:"たろう", セット:"B", デザート:"チョコ"},
    {名前:"なすび", セット:"C", デザート:"チョコ"}
];
```


↓こうすると配列の最初から最後までとってこれます

```js
for(const r of lunch){
    console.log(r);
}
```

console上での実行結果↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/b339b6fa-6bc0-6078-7832-f19d4358fb93.png)


## for-ofの使い方2
こうするとキーが「名前」のオブジェクトだけ取ってこれます。

```js
for(const {名前} of lunch){
    console.log({名前});
}
```


console上での実行結果↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/da40d3f8-4e9f-30a6-9fc7-ad2206f6efbe.png)


## for-ofの使い方3
こうすると名前の値だけ取ってこれます。
分割代入というやり方です。
参考：[分割代入](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)

```js

for(const {名前:v} of lunch){
    console.log(v);
}
```

console上での実行結果↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/8c3694c2-7c7b-efc9-8fcf-ced251dcf319.png)


# forEachで書き換えてみる

配列から1つずつ値を持ってきて処理する・・・・というメソッドですが、こんなふうに書きます。

```js
配列.forEach(v =>{
    //処理
})
```

先程のfor-ofの使い方1～3を書き換えるとこんな感じ。結果も同じです。

```js
//1
lunch.forEach(r => {
    console.log(r);
});

//2
lunch.forEach(({名前}) => {
    console.log({名前});
});

//3
lunch.forEach(({名前:v}) => {
    console.log(v);
});
```

# テーブルで試す
## テーブルの準備

こんなテーブルを準備しましょう。

テーブル名：ランチ

| フィールド名／コード | フィールド種類  |内容|
|:-:|:-:|:-:|
|   番号| 数値  |   |
|   名前|文字列(1行)   |   |
|   セット|ラジオボタン  | A B  |
|   デザート|チェックボックス   |チョコ　バニラ   |

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/a9ebfda5-5fe1-1582-3b6b-e578e737f247.png" width="600px">

## JavaScriptを書く

こんな感じで、詳細画面で中身が確認できるように色々と書いてみました。
是非、実行してみてね✨✨
※[【kintone】テーブルの値を変更してみる（超初心者向け）](https://qiita.com/juri_don/items/dde88a7569deb62a7c5b)等参考にしてくださいね。

即時関数の部分は自分で書いてね

```js
//詳細画面
kintone.events.on(['app.record.detail.show'], event => {
    
    const record = event.record;
    console.log("record\n",record.ランチ.value);

    console.log("\n【for-of 1】for(const r of record.ランチ.value)");
    for(const r of record.ランチ.value){
        console.log(r);
    }
    
    console.log("\n【for-of 2】for(const {value} of record.ランチ.value)");
    for(const {value} of record.ランチ.value){
        console.log(value);
    }

    console.log("\n【for-of 3】for(const {value:r} of record.ランチ.value)");
    for(const {value:r} of record.ランチ.value){
        console.log(r);
    }

    console.log("\n【for-of 4】for(const {value:{名前:r}} of record.ランチ.value)");
    for(const {value:{名前:r}} of record.ランチ.value){
        console.log(r);
    }

    console.log("\n【for-of 5】for(const {value:{名前:{value:r}}} of record.ランチ.value)");
    for(const {value:{名前:{value:r}}} of record.ランチ.value){
        console.log(r);
    }

    console.log("\n【for-of 6】for(const r of record.ランチ.value)");
    for(const r of record.ランチ.value){
        console.log(r.value.名前.value);
    }

    console.log("\n【forEach　1】forEach");
    record.ランチ.value.forEach(({value:{名前:{value:r}}}) => {
        console.log(r);
    });

    console.log("\n【forEach 2】forEach");
    record.ランチ.value.forEach(r => {
        console.log(r.value.名前.value);
    });

    return event;
});    
```

## 実行結果のconsoleスクショ画像（長い）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/ad73c8e5-9b04-99fc-a978-0784f1c21b4d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/1212731d-0ecd-6047-fd8b-1e16246be649.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/4bb7b0e3-e613-987d-661e-790bebc0a285.png)


# まとめ

for-ofやforEachを使うと、自由自在？にテーブルのフィールドの値が取ってこれるような気がしてきました。
どの方法が一番いいのかは試していないですが、処理速度とか調べてみたいです。（調べたよって方がいたら教えて下さい）

というわけで、今日はこのへんで(・ω・)ﾉｼﾉｼ