如果不是nil而不是空,则合并数组

Ruby中有一些数组(这种情况下有4个数组)

array1 = [{key="label1.1", value="label1.2"}, {key="label1.2", value="label1.2"}] array2 = [{key="label2.1", value="label2.2"}] array3 = [] array4 = nil result_array = array1 | array2 | array3 | array4 

每个数组都具有与其他数组相同的结构:它是哈希值。 它中有多少元素,如果它是零或空的 – 它是未知的。

所以我需要result_array来看:

[{key="label1.1", value="label1.2"}, {key="label1.2", value="label1.2"}, {key="label2.1", value="label2.2"}]

但是,该代码将导致exception,因为array4等于nil

是否有任何Ruby方法来检查数组是否为空且不为空,如果是,则将其合并到result_array

 [array1, array2, array3, array4].compact.reduce([], :|) 

内核定义了一个名为Array的方法,该方法将使数组保持单独,但将nil转换为空数组。

 array1 = [{:key => "label1.1", :value => "label1.2"}, {:key =>"label1.2", :value => "label1.2"}] array2 = [{:key => "label2.1", :value => "label2.2"}] array3 = [] array4 = nil result_array = Array(array1) | Array(array2) | Array(array3) | Array(array4) result_array # => [{:key=>"label1.1", :value=>"label1.2"}, {:key=>"label1.2", :value=>"label1.2"}, {:key=>"label2.1", :value=>"label2.2"}]