2014-01-12 99 views
0

我一直在努力:完成keysAndValues函數,以便它接受一個對象並將鍵和值作爲單獨的數組返回。獲取鍵/值對作爲數組

我已經添加了幾個版本,所以你可以看到我是如何思考問題的。

def keysAndValues(data) 
     data.each do |data| 
     data.split(key.to_a, value.to_a) 
     end 
     data 
    end 


keysAndValues ({a: 1, b: 2, c: 3}) 


def keysAndValues(data) 
    data.each do |data| 
    data.split([key], [value]) 
    end 
    data 
end 

keysAndValues ({a: 1, b: 2, c: 3}) 


def keysAndValues(data) 
    data.each do |data| 
    data.slice([key], [value]) 
    end 
    data 
end 

keysAndValues ({a: 1, b: 2, c: 3}) 



def keysAndValues(data) 
    data.each do |data| 
    data.slice_to.a(2)([ :a ], [ ' ' ]) 
    end 
    data 
end 

keysAndValues ({a: 1, b: 2, c: 3}) 



def keysAndValues(data) 
    data.each.slice_to.a(2) { |x, y| [x], [y] } 
    end 
    data 
end 

keysAndValues ({a: 1, b: 2, c: 3}) 

回答

2
def keysAndValues(data) 
    [data.keys, data.values] 
end 

keys, values = keysAndValues({a: 1, b: 2, c: 3}) 

keys 
# => [:a, :b, :c] 
values 
# => [1, 2, 3] 

請注意,keysAndValues沒有遵循Ruby的命名約定。正確的名字應該是keys_and_values

+0

不能相信我錯過了Ruby約定!我花了很長時間試圖解決它的標誌!我明白了爲什麼我一直得到一個未定義的方法錯誤 - 我沒有定義鍵或值。謝謝。 – HandDisco

1

有對於內置的方法:

irb(main):001:0> {a: 1, b: 2, c: 3}.keys 
=> [:a, :b, :c] 
irb(main):002:0> {a: 1, b: 2, c: 3}.values 
=> [1, 2, 3] 

或者,也許你想要嗎? (對不起,你的問題我也不清楚)

irb(main):003:0> Array({a: 1, b: 2, c: 3}) 
=> [[:a, 1], [:b, 2], [:c, 3]] 
0
def keys_and_values(data) 
    return data.keys, data.values 
end 

從而:

data_hash = {A 1,B:2,C:3,d:4}

keys_and_values(data_hash)

回報:

[[a:, b:, c:, d:], [1, 2, 3, 4]]