【发布时间】:2012-03-13 18:54:03
【问题描述】:
如果数组中的值与给定字符串匹配,我会尝试从数组中删除元素。
我有一个包含标签数组的数组。我正在比较标签的名称,以查看它们是否与用户希望从搜索中排除的内容相匹配。如果是这样,我想从主数组中删除该元素,或者可能添加不匹配的元素。
这是我目前所拥有的:
results = Array.new
test = 0
no_tags.each do |no_tag| #an array of tags whose resources are not to be included
resources.each do |r|
add_to_array = false
r.tags.each do |t|
if t.name.eql? no_tag
test += 1
add_to_array = false
else
add_to_array = true
end
end
if add_to_array
results << r
end
end
end
test 变量只是一个用于调试匹配出现次数的变量,它恰好是 763 个资源中的 141 个。但是,当我在运行此块后执行 results.count 时,我应该得到 622 时只得到 732。
为了澄清,如果标签数组包含匹配项,我需要删除资源数组的元素,或者如果未找到匹配项,另一个选项是将资源数组元素包含到新数组中。
这将作为 JSON 返回给浏览器,我需要排除标签与 no_tags 数组的值匹配的资源。
【问题讨论】:
-
如果一个资源有多个标签,是否包含它的决定仅基于它的最后一个标签。这可能就是差异的来源。
标签: ruby arrays ruby-on-rails-3