我有一種方法,將兩個數組一起添加並收集它們的ID。問題是,一個或兩個數組都可能爲空。如何添加兩個陣列在一起,並收集ids,其中一個或兩個都可以爲空
這是我有:
all_items = old_duplicate_items.to_a + new_duplicate_items.to_a
all_items.map(&:id) unless all_items.blank?
可以這樣加以改進?
我有一種方法,將兩個數組一起添加並收集它們的ID。問題是,一個或兩個數組都可能爲空。如何添加兩個陣列在一起,並收集ids,其中一個或兩個都可以爲空
這是我有:
all_items = old_duplicate_items.to_a + new_duplicate_items.to_a
all_items.map(&:id) unless all_items.blank?
可以這樣加以改進?
如果你確定一個空數組作爲兩個輸入數組是nil
的情況下的結果,那麼你可以如下鞏固它:
(old_duplicate_items.to_a + new_duplicate_items.to_a).map(&:id)
但這是所有我能看到。
all_items = ((old_duplicate_items || []).to_a + (new_duplicate_items || []).to_a).map(&:id)
我覺得'|| []'操作是不必要的,因爲'.to_a'會將'nil'轉換爲一個空數組,因爲我認爲OP實現了。 –
@PeterAlfvin你說得對。我自己也不確定,所以我只是把它們加進去了。 –
您的解決方案看起來不錯。現在,它返回零或一個填充數組。如果它確定返回一個空數組,你可以嘗試:
(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
向我們展示輸入數組的樣本,以及您期望得到的數組的樣子。 –