ruby - 在 Ruby 中匹配来自多个数组的相应对象索引值

标签 ruby arrays loops

我有三个数组 =

name = ["sample","test","sample"]
date = ["September","October","November"]
score = [10,20,30]

我想遍历 name 中的每个对象,并返回等于 sample 的每个对象的索引值。这个想法是然后获取该索引并返回 datescore 中的相应对象。这就是我目前的做法:

new_name_array = []
new_date_array = []
new_score_array = []
count = 0
name.each do |x|
  if x == 'sample'
    new_name_array << x
    new_date_array << date.index[count]
    new_score_aray << score.index[count]

    count += 1
  else
    count += 1
    next
  end
end

然后我有了三个新数组,它们只包含我需要的值,我可以将脚本的其余部分基于这些数组。

我知道有更好的方法来做到这一点 - 这绝不是最有效的方法。有人可以提供一些建议以更简洁的方式编写上述内容吗?

旁注:

有没有办法在循环中提取 x 的整数值而不是使用 count += 1

最佳答案

怎么样

name.zip(date, score).select { |x| x.first == 'sample'

你会得到一个三元素数组:

[["样本", "九月", 10], ["样本", "十一月", 30]]

此外,如果在迭代时需要元素的索引,通常使用 each_with_index

关于ruby - 在 Ruby 中匹配来自多个数组的相应对象索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19709103/

相关文章:

ruby-on-rails - 如何添加菜单注销 rails admin

ruby - 使用 image_tag、activeStorage 和 "TypeError (no implicit conversion of nil into String)"加载图像时 Rails "has_many_attached"

java - 生成另一个 "Joke"语句时出现问题

JavaScript Math.min 返回错误值

list - 尝试从 Biopython 获取分类信息

r - 修改数据框中变量的值

Ruby 线程的输出顺序?

ruby - Hash.each 中的最后一个元素

java - 有什么方法可以将数组复制到元素数量较少的同一个数组

java - 重构 JSP scriptlet 循环以使其更具可读性