arrays - 合并两个不相等的数组进行散列

标签 arrays ruby hash

我需要帮助创建表示 Ruby 中两个数组的所有可能组合的散列。

我有什么:

numbers = [1, 2]
letters = ['q', 'w', 'e', 'r']

我需要什么:

combination = [
{ number: 1, letter: 'q' },
{ number: 1, letter: 'w' },
{ number: 1, letter: 'e' },
{ number: 1, letter: 'r' },
{ number: 2, letter: 'q' },
{ number: 2, letter: 'w' },
{ number: 2, letter: 'e' },
{ number: 2, letter: 'r' }
]

重要提示:我永远不会知道“数字”或“字母”数组包含多少项(只是它们的长度永远不相等),这因情况而异。

到目前为止,以下内容让我最接近目标,但这会将所有字母一起提交给每个数字,我不明白如何在没有错误的情况下更进一步:

  combination = Hash.new []
  numbers.each do |nr|
    combination[:number => nr] = [:letter => letters]
  end

最佳答案

product可能是您正在寻找的:

numbers.product(letters).map { |n, l| {number: n, letter: l} }
# => [{:number=>1, :letter=>"q"}, {:number=>1, :letter=>"w"}, {:number=>1, :letter=>"e"}, {:number=>1, :letter=>"r"}, {:number=>2, :letter=>"q"}, {:number=>2, :letter=>"w"}, {:number=>2, :letter=>"e"}, {:number=>2, :letter=>"r"}]

关于arrays - 合并两个不相等的数组进行散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36841532/

相关文章:

arrays - 在 nm 数组上按列迭代比按行迭代更快吗?

ruby - 缩短答案出错?

c++ - 哈希函数为一对long long?

ruby - Hash[] vs to_h,它们是否相同,如果相同,哪个更好?

arrays - 从 array1 读取 从 array2 写入

c - 如何在 C 中声明一个条目数量未知的数组?

ruby - Nokogiri 用 <span>ed 词替换内部文本

javascript - Rails 5 - 以 json 格式将数据从 Controller 发送到 javascript

javascript - 将 XML jQuery 对象转换为字符串

javascript - 我试图过滤然后对数字和字符串数组进行排序,但我的代码无法正常工作