7

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 

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

所以我需要result_array 看:

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

但是,该代码将导致异常,因为array4等于nil.

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

4

2 回答 2

16
[array1, array2, array3, array4].compact.reduce([], :|)
于 2012-09-01T14:55:03.287 回答
4

内核定义了一个名为的方法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"}]
于 2012-09-01T14:55:56.427 回答