配列の生成と要素の割り当て
内包表記によりリストを生成し、配列に代入することができる。
1 2 3 4 5 6 7 |
# 配列の生成:定数 array = (1 for n in [1..5]) console.log array # [ 1, 1, 1, 1, 1 ] # 配列の生成:変数 array = (n for n in [1..5]) console.log array # [ 1, 2, 3, 4, 5 ] |
要素の取り出し
配列リストの要素を一つずつ列挙できる。
1 2 3 4 |
# 配列の要素の和 sum = 0 sum += x for x in array console.log sum # 15 |
二次元配列の生成
ややこしいやり方
(content++ for c in [1..4])
で要素数が4のリストを生成- そのリストをgridに3回加えている
1 2 3 4 5 6 7 |
# 二次元配列の生成 grid = [] content = 10 for r in [1..3] grid.push((content++ for c in [1..4])) console.log grid # [ [ 10, 11, 12, 13 ], [ 14, 15, 16, 17 ], [ 18, 19, 20, 21 ] ] |
シンプルなやり方
(content++ for c in [1..4])
で要素数が4のリストを生成- そのリストを要素とする要素数が3の要素を生成
1 2 3 4 5 |
# もっとシンプルな二次元配列の生成 content = 10 grid = ((content++ for c in [1..4]) for r in [1..3]) console.log grid # [ [ 10, 11, 12, 13 ], [ 14, 15, 16, 17 ], [ 18, 19, 20, 21 ] ] |
要素の参照
添字をパラメータとして内包表記で順次参照できる。
1 2 3 4 |
# 二次元配列の要素の和 sum = 0 sum += grid[r][c] for c in [0...4] for r in [0...3] console.log sum # 186 |
あるいは直接要素を指定し、入れ子で要素の配列を列挙参照することもできる。
1 2 3 4 |
# 要素数を意識しない二次元配列の要素の和 sum = 0 sum += x for x in rowArray for rowArray in grid console.log sum # 186 |
要素の再設定
よくある要素の設定。
1 2 3 4 5 6 7 8 9 10 11 12 |
# 既存配列の要素の再設定(1次元) array = [1, 2, 3] array[i] = 0 for i in [0...array.length] console.log array # [ 0, 0, 0 ] # 既存配列の要素の再設定(2次元) array = [ [1, 2, 3] [4, 5, 6] ] array[r][c] = 0 for r in [0...array.length] for c in [0...array[0].length] console.log array # [ [ 0, 0, 0 ], [ 0, 0, 0 ] ] |