sort
colors = ['red','purple','blue','pink']
ブロックなし:昇順
colors.sort
#=> ["blue", "pink", "purple", "red"]
ブロックで指定
colors.sort{|a, b| a[0] <=> b[0]}
#=> ["blue", "pink", "purple", "red"]
ブロックで指定(逆順)
colors.sort{|a, b| b[0] <=> a[0]}
#=> ["red", "purple", "pink", "blue"]
複数条件
<=>
は-1,0,1を返すので、0の場合(同じ場合)は||
で繋がれた次の条件でソートさせる
colors.sort do |a, b|
(a[0] <=> b[0]).nonzero? || (a[1] <=> b[1])
end
#=> ["blue", "pink", "purple", "red"]
insert
insert({位置}, {値},...)
基本:1つ目の引数の箇所に2つ目以降の値を挿入する
[1, 2, 3].insert(2, 9)
#=> [1, 2, **9,** 3]
複数も可
[1, 2, 3].insert(2, 8, 9)
#=> [1, 2, **8, 9,** 3]
不足分はnilが入る
[1, 2, 3].insert(5, 6)
#=> [1, 2, 3, **nil, nil, 6**]
置換
array = [1, 2, 3]
[{位置}, {数}] = {値}
{位置}番目から{数}個の値を{値}に置換する
破壊的。戻り値は{値}
array[0, 1] = 9
#=> 9
array
#=> [9, 2, 3]
複数も可
array[2, 1] = 7, 8, 9
#=> [7, 8, 9]
array
#=> [1, 2, 7, 8, 9]
配列内配列にはならない
array[2, 1] = [7, 8, 9]
#=> [7, 8, 9]
array
#=> [1, 2, 7, 8, 9]
{数}と{値}の個数が合わなくても良い
{数}の分の値が消されて{値}が追加される
{数}は元の配列の個数を超えていても良い
array[1, 3] = 9
array
#=> [1, 9]
{数}を0にすれば、挿入になる
array[1, 0] = 9
array
#=> [1, 9, 2, 3]