Ruby on rails 如何将两个数组添加到一起并收集其中一个或两个都可以为空的ID
我有一个方法,将两个数组添加到一起并收集它们的ID。问题是,一个或两个数组都可能为空 这就是我所拥有的:Ruby on rails 如何将两个数组添加到一起并收集其中一个或两个都可以为空的ID,ruby-on-rails,ruby,arrays,Ruby On Rails,Ruby,Arrays,我有一个方法,将两个数组添加到一起并收集它们的ID。问题是,一个或两个数组都可能为空 这就是我所拥有的: all_items = old_duplicate_items.to_a + new_duplicate_items.to_a all_items.map(&:id) unless all_items.blank? 这可以改进吗?如果两个输入数组都为nil时,您可以使用空数组,则可以按如下方式合并它: all_items = ((old_duplicate_items || [])
all_items = old_duplicate_items.to_a + new_duplicate_items.to_a
all_items.map(&:id) unless all_items.blank?
这可以改进吗?如果两个输入数组都为
nil
时,您可以使用空数组,则可以按如下方式合并它:
all_items = ((old_duplicate_items || []).to_a + (new_duplicate_items || []).to_a).map(&:id)
(old_duplicate_items.to_a + new_duplicate_items.to_a).map(&:id)
但这就是我所能看到的一切。您的解决方案看起来相当不错。现在,它返回nil或填充的数组。如果可以返回空数组,您可以尝试:
(old_duplicate_items.to_a + new_duplicate_items.to_a).map &:id
要保持零回报率,至少需要像现在这样复杂的东西:
(x = old_duplicate_items.to_a + new_duplicate_items.to_a).size > 0 ? x : nil
或许:
if (x = old_duplicate_items.to_a + new_duplicate_items.to_a).size > 0; x end
向我们展示输入数组的示例,以及您期望得到的数组的外观。我认为
|【】
操作是不必要的,因为.to\u a
将nil
转换为空数组,因为我假设操作已实现。@PeterAlfvin您是对的。我自己也不确定,所以我就把它们加进去了。