管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

Javascriptで配列を10個ずつに区切って処理する

Javascriptを使って配列を10個ずつに区切って処理する機会があったのでメモ。

メモ

({
    printArray: function (array) {
        for (var i = 0; i < array.length; i++) {
            WScript.Echo(array[i]);
        }
    },
    main: function () {
        var array = [
            1
            , 2
            , 3
            , 4
            , 5
            , 6
            , 7
            , 8
            , 9
            , 10
            , 11
            , 12
            , 13
            , 14
            , 15
            , 16
            , 17
            , 18
            , 19
            , 20
            , 21
            , 22
            , 23
            , 24
        ];

        // 10個ずつに区切って処理する(端数は端数分だけ処理)
        var subArraySize = 10;

        var blockCount = Math.ceil(array.length / subArraySize);

        for (var i = 0; i < blockCount; i++) {
            WScript.Echo(i + "-------");
            // array.slice(始点のインデックス,終点のインデックス+1)
            // array.slice(0,10) → 長さ10の配列(0-9)
            // 終点のインデックスが元配列長を超えた場合、元配列の末尾までで配列が作られる
            var subArray = array.slice(i * subArraySize, i * subArraySize + subArraySize);

            // 3,13,23番目の値を書き換えても、切り出した配列には影響ないことを確認
            // 文字列、数値、真偽値では、 slice は値を新しい配列にコピーするらしい
            array[i * subArraySize + 2] = 5;
            WScript.Echo("array:" + array[i * subArraySize + 2]);
            WScript.Echo("subArray:" + subArray[2]);

            this.printArray(subArray);
        }
    }
}).main()

実行例

PS C:\Users\hoge\Documents\Jscripts> cscript.exe //nologo .\array_slice.js
0-------
array:5
subArray:3
1
2
3
4
5
6
7
8
9
10
1-------
array:5
subArray:13
11
12
13
14
15
16
17
18
19
20
2-------
array:5
subArray:23
21
22
23
24

参考