LoginSignup
4
4

More than 5 years have passed since last update.

Arrayのメソッドまとめ①

Posted at

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]
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4