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