Ruby on rails 如何将两个数组添加到一起并收集其中一个或两个都可以为空的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 || [])

我有一个方法,将两个数组添加到一起并收集它们的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 || []).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您是对的。我自己也不确定,所以我就把它们加进去了。