Array#zipメソッド
違いを見つけることができるように、2つの配列を要素ごとに比較したいとします。
または、すべてのインデックスで最大の数値を見つけたい場合や、キーのリストと値のリストをマージしてハッシュを作成したい場合もあります…
…これを行うための「難しい方法」は、次のようになります。
例 :
a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]]
それで仕事は終わりますが、きれいではありませんよね?
さらに、何が起こっているのかを理解するために、少し立ち止まって考えなければなりません。
ここで、Array#zip(またEnumerable#zip)が機能します!
例 :
a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.zip(b) # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]]
あはは! …はるかに優れています。
同意しませんか?
zip
に精通している場合 何が起こっているのかすぐにわかります。そうでない場合は、ドキュメント(またはさらに良いことに、この記事)をざっと読んで説明します。
zip
を使用するもう1つの利点 他の列挙可能なメソッドと簡単に連鎖できるということです。
たとえば、カウント方法 :
a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.zip(b).count { |a,b| a == b } # 3
このコードは、同じで同じ位置にある要素の正確な数を返します。
前に述べたように、使用できるもう1つのトリックは、キーと値のリストをマージしてハッシュを作成することです。
例 :
a = %w(bacon coconut walnuts) b = [100, 200, 300] a.zip(b).to_h # {"bacon"=>100, "coconut"=>200, "walnuts"=>300}
別の例が必要ですか?
わかりました!
こちら :
letters = Array('a'..'z') shift = 3 translation_map = letters.zip(letters.rotate(shift)).to_h "hello".chars.map { |ch| translation_map[ch] }.join
これは、シーザー暗号アルゴリズムの優れた実装です。
概要
Array#zip
について学びました メソッド。2つのアレイを「マージ」して、それを使っていくつかのクールなトリックを実行できます🙂
この投稿を楽しんだら、忘れずに共有してください お気に入りのソーシャルネットワークで、より多くの人が読めるようにしましょう!
-
JavaScript getTime()メソッド
JavaScriptのgetTime()メソッドは、1970年1月1日から経過したミリ秒数を返します。 以下はgetTime()関数のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Do
-
JavaScriptのSort()メソッド
JavaScriptのsort()メソッドは、配列のソートに使用されます。並べ替えの順序は、アルファベット、数字、昇順、降順のいずれかです。 以下は、sort()メソッドのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /&