Rubyでの配列フィルタリング
1332 ワード
Step:1次の配列があります
もし私たちが今4文字の名前を選んだら、どうすればいいですか?
他の言語のように、forループを書いて、各項目を遍歴して、長さが4なら選んでください.
rubyはもっと良い方法があります.1行だけ必要です.
find_all法は後続のblockと組み合わせて,条件に合致する配列項を簡潔明瞭にスクリーニングした.配列からアイテムを削除する場合は、rejectメソッドを使用します.
blockでは、複数の条件を再結合することもできます.
以上の文は配列の中から長さが3より大きくて、8より小さくて、しかも頭文字がzの名前で、依然として簡潔で明瞭で、効率の要素を無視して、私達はrubyの中の配列をデータベースとして照会することができます
* >> name = %w{ zhangsan lisi wangwu zhaoliu galeki lyanry liulanger xiaosl tom nick bara}
* => ["zhangsan","lisi","wangwu","zhaoliu","lyanry","liulanger","xiaosl","tom","nick","bara" ]
もし私たちが今4文字の名前を選んだら、どうすればいいですか?
他の言語のように、forループを書いて、各項目を遍歴して、長さが4なら選んでください.
rubyはもっと良い方法があります.1行だけ必要です.
* >> name.find_all{|n| n.length == 4}
* => ["lisi", "nick", "bara"]
find_all法は後続のblockと組み合わせて,条件に合致する配列項を簡潔明瞭にスクリーニングした.配列からアイテムを削除する場合は、rejectメソッドを使用します.
* >> name.reject{|n| n.length == 4}
* => ["zhangsan", "wangwu", "zhaoliu", "galeki", "lyanry", "liulanger", "xiaosl", "tom"]
blockでは、複数の条件を再結合することもできます.
* >> name.find_all{|n| n.length>3 && n.length <8 && n[0,1] == "z"}
* => ["zhaoliu"]
以上の文は配列の中から長さが3より大きくて、8より小さくて、しかも頭文字がzの名前で、依然として簡潔で明瞭で、効率の要素を無視して、私達はrubyの中の配列をデータベースとして照会することができます