カジバ技研

ドローンとか飛行機とか

2次元配列をfor文で初期化[Vue3]

はじめに

あけましておめでとうございます。

昨年末よりVue.jsでプログラミングを始めまして、 配列の初期化周りでつまづきまして記事を書いてます。

 Vue3でfor文を使った配列の初期化をしようとしましたがうまくいかず 記事もあまりなかったのでメモを置きます。

目次

やりたいこと

乱数を適当に入れた配列をつくって VueのSFC(単一ファイルコンポーネント)で表示させる。

問題

とりあえず、まずは中身は0だけの1次元配列を出力する関数を script setupタグに書いてみましたが動きませんでした。

<script setup>
    const createArray=()=>{
        let arr1=[];
        for( let i=0 ; i<10 ; i++){
            arr1.push(0);
        }
        return arr1;
    }
</script>
<template>
    <div>
        <p>{{ createArray }}</p> 
    </div> 
</template>

解決策

Vueの公式サイトを巡回していた際 サンプルコードのページを初めて見つけまして、Vueの関数の動かし方がやっとわかりました。

公式サイトのhttps://ja.vuejs.org/examples/#timerで 13行目でupdateメソッドを定義した後、20行目で呼び出すことでメソッドが動くようでした。 つまりやりたいことに反映するとこう↓

<script setup>
    const createArray=()=>{
        let arr1=[];
        for( let i=0 ; i<10 ; i++){
            arr1.push(0);
        }
        return arr1;
    }
+  let array=ref([])
+  array=createArray();
</script>
<template>
    <div>
        <p>{{ array }}</p> 
    </div> 
</template>

以下が表示され成功しました。

[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]

乱数を入れる

配列内に乱数を入れるには以下のような変更でできました。

<script setup>
    const createArray=()=>{
        let arr1=[];
        for( let i=0 ; i<10 ; i++){
-            arr1.push(0);
+            arr1.push(Math.floor(Math.random()*10));
+           //0~9の値を配列に入れる。
        }
        return arr1;
    }
  let array=ref([])
  array=createArray();
</script>
~以下省略~

Math.random()は0以上1未満の値を生成するため 整数の値を出すために10倍しています。 Math.floor()で小数点以下を切り捨ててます。

2次元配列に拡張

関数内を2重ループ化して2次元配列に拡張します。

<script setup>
    const createArray=()=>{
        let arr1=[];
+       let arr2=[];
        for( let i=0 ; i<10 ; i++){
+          for( let j=0 ; j<10 ; j++){
                arr1.push(Math.floor(Math.random()*10));
               //0~9の値を配列に入れる。
+          }
+          arr2.push(arr1);
+          arr1=[];
        }
-       return arr1;
+       return arr2;
    }
    let array=ref([])
    array=createArray();
</script>
~以下省略~

以下が表示され成功しました。

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

おわりに

公式のサンプルコードがすごい豊富にあったので、どんどん使っていきたいですね。

更新

初:2023/1/1