我有两种不同类型的<select>
。
codes
我需要形成这种格式的数组。
AllCodes = [
{
group_name: 'Marked',
group_codes: [
{
code: '1A',
description: 'Marked.'
}
],
.. //next group codes.
}
]
AllCodes = [
{
code: '2',
description: 'Located. Facilities Marked.'
}
.. //next codes.
]
我是这样做的,但我真的不喜欢这种方法,我怎么能干掉代码?
[
{
code: '1A',
description: 'example'
},
.. // next code
]
答案 0 :(得分:1)
# obj is an each element of your AllCodes array
codes = AllCodes.inject([]) do |codes_array, obj|
if obj.has_key?(:group_codes)
codes_array += obj[:group_codes]
else
codes_array << obj
end
end
codes_array
是一个注入的数组。迭代AllCodes
,如果是当前对象has_key?(:group_codes)
,我们应该obj[:group_codes]
(因为它已经是所需格式的数组),所以我们合并了codes_array
用它:codes_array += obj[:group_codes]
。如果它没有该密钥,那么它已经是所需格式的哈希值。所以我们只需将此元素添加到数组中。