-2
{
    "CourseID": 1111,
    "Course": {
        "Code": "ABCD",
        "Name": "ABCD",
        "Qualification": "ABCD",
        "Discipline": "ABCD"
    },
    "Modules": [
        {
            "ID": 12345,
            "Code": "ABCD",
            "Name": "ABCD",
            "Core": true,
            "Units": [
                {
                    "ID": 23456,
                    "Code": "ABCD",
                    "Name": "ABCD",
                    "Core": true,
                    "my_key": true
                },
                {
                    "ID": 34567,
                    "Code": "ABCD",
                    "Name": "ABCD",
                    "Core": true,
                    "my_key": true
                }
            ]
        }
    ]
}

上記の値はすべて異なり、値はあまり気にしません。

だから私が上から必要なのは

[CourseID、コース、コード、名前、資格、分野、モジュール、ID、コード、名前、コア、単位、ID、コード、名前、コア、my_key、ID、コード、名前、コア、my_key]

上記の配列には繰り返しがあり、それが必要です。

私はそれで数時間頭を悩ませてきましたが、手に入れることができません。

something.each do |key, value|
  hash = {key => value}
  hash.map { |k, v|
    if v.is_a?(Hash)
      v.map { |x, y|
        hash = x
      }
    elsif v.is_a?(Array)
      v.map { |x, y|
        x.select { |k, v|
          hash1 = [k].include? k
        }
      }
    end
  }
end 

誰かがこれで私を助けることができれば、それは本当にありがたいです.

4

3 に答える 3

0
  x = {
    CourseID: 1111,
    Course: {
        Code: "ABCD",
        Name: "ABCD",
        Qualification: "ABCD",
        Discipline: "ABCD"
    },
    Modules: [
        {
            ID: 12345,
            Code: "ABCD",
            Name: "ABCD",
            Core: true,
            Units: [
                {
                    ID: 23456,
                    Code: "ABCD",
                    Name: "ABCD",
                    Core: true,
                    my_key: true
                },
                {
                    ID: 34567,
                    Code: "ABCD",
                    Name: "ABCD",
                    Core: true,
                    my_key: true
                }
            ]
        }
    ]
}

def keys_only(data)
  array = []
  keys_only_iterate(data,array)
  array
end

def keys_only_iterate(data,array)
  return unless data.is_a?(Hash) || data.is_a?(Array)
  if data.is_a?(Hash)
    data.each do |k, v|
      array << k
      keys_only_iterate(v,array)
    end
  else
    data.each do |v|
      keys_only_iterate(v,array)
    end
  end
end

array = keys_only(x)
puts array
于 2013-08-30T00:57:09.860 に答える
-2
def array_traverse(array, hash_keys)                                            
  2 array.each do |i|                                                               
  3 if i.class == Array                                                             
  4 hash_keys = array_traverse(i, hash_keys)                                        
  5 elsif i.class == Hash                                                           
  6 hash_keys = hash_traverse(i, hash_keys)                                         
  7 end                                                                             
  8 end                                                                             
  9 return hash_keys                                                                
 10 end                                                                             
 11 def hash_traverse(hash, hash_keys)                                              
 12 hash.keys().each do |i|                                                         
 13 if hash[i].class == Array                                                       
 14 hash_keys = array_traverse(hash[i], hash_keys)                                  
 15 elsif hash[i].class == Hash                                                     
 16 hash_keys = hash_traverse(hash[i], hash_keys)                                   
 17 end                                                                             
 18 hash_keys.push(i)                                                               
 19 end                                                                             
 20 return hash_keys                                                                
 21 end  
a={                                                                             
 24 "CourseID"=> 1111,                                                              
 25 "Course"=> {                                                                    
 26 "Code"=> "ABCD",                                                                
 27 "Name"=> "ABCD",                                                                
 28 "Qualification"=> "ABCD",                                                       
 29 "Discipline"=> "ABCD"                                                           
 30 },                                                                              
 31 "Modules"=> [                                                                   
 32 {                                                                               
 33 "ID"=> 12345,                                                                   
 34 "Code"=> "ABCD",                                                                
 35 "Name"=> "ABCD",                                                                
 36 "Core"=> true,                                                                  
 37 "Units"=> [                                                                     
 38 {                                                                               
 39 "ID"=> 23456,                                                                   
 40 "Code"=> "ABCD",                                                                
 41 "Name"=> "ABCD",                                                                
 42 "Core"=> true,                                                                  
 43 "my_key"=> true                                                                 
 44 },                                                                              
 45 {                                                                               
 46 "ID"=> 34567,                                                                   
 47 "Code"=> "ABCD",                                                                
 48 "Name"=> "ABCD",                                                                
 49 "Core"=> true,                                                                  
 50 "my_key"=> true                                                                 
 51 }                                                                               
 52 ]                                                                               
 53 }                                                                               
 54 ]                                                                               
 55 }                                                                                
 22 puts hash_traverse(a, [])          
于 2013-08-30T00:57:15.157 に答える