乘以两个数组的内容(不是数组本身)

时间:2011-06-08 19:26:30

标签: ruby-on-rails ruby

我想用卡片中的每张卡片制作一个数组,所以它会是[“Ac”,“Ad”,“Ah”,“As”,“Kc”,...]虽然顺序并不重要

有没有办法注入可以用来解决这个问题?这就像我能得到的一样接近。

cards = ["A", "K", "Q", "J", "T", "9", "8", "7", "6", "5", "4", "3", "2"] 
suits = ["c", "s", "d", "h"] 
ruby-1.9.2-p180 :025 > cards.inject(suits) { |suit, card| suit.map{|s| "#{card}#{s}"}}
 => ["23456789TJQKAc", "23456789TJQKAs", "23456789TJQKAd", "23456789TJQKAh"] 

3 个答案:

答案 0 :(得分:5)

这是你的目标吗?

cards.map { |card|
  suits.map { |suit| "#{card}#{suit}" }
}.flatten

答案 1 :(得分:4)

或者类似于

的东西
cards.product( suits ).map(&:join)

答案 2 :(得分:0)

这并没有使用inject,但值得一提的是:Array#product。查看类似问题的答案here