【Ruby】配列の&と|の機能について

特殊なルールで配列を並び直す。たとえば
['いち', 'に', '', 'よん', 'なな', 'ご']
から
['に', 'よん','いち', 'ご', 'なな']
を作りたい(奇数が優先、2で割る等の数値演算はできない)ときはどうするか。
①まず以下のようにやることを思いついた。

['いち', '', '', 'よん', 'なな', '']
  .reject { |v| v.nil? || v == '' }
  .sort_by { |v| %w(に よん ろく はち いち さん ご なな).index(v) }

②ドキュメントを読んでいた時にArray#|のところで「preserving the order from the original array」という記述があり
 Array#&もやっぱりそうだった

%w(に よん ろく はち いち さん ご なな) &
['いち', '', '', 'よん', 'なな', '']

めでたしめでたし。これを期に、必要に迫られる前にドキュメントを読んでおくくせを付けておこうと思います! もっと良い方法がありましたらぜひ。