如何将两个数组一起添加并收集id,其中一个或两个可以为null

时间:2013-11-29 03:30:51

标签: 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?

可以改进吗?

3 个答案:

答案 0 :(得分:2)

如果两个输入数组都是nil,那么你可以使用空数组,那么你可以按如下方式合并它:

(old_duplicate_items.to_a + new_duplicate_items.to_a).map(&:id)

但这就是我所能看到的一切。

答案 1 :(得分:1)

你的解决方案看起来很不错。现在,它返回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

答案 2 :(得分:0)

all_items = ((old_duplicate_items || []).to_a + (new_duplicate_items || []).to_a).map(&:id)