2014-01-12 3 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은 루비 명명 규칙을 준수하지 않는다고 유의하시기 바랍니다 (죄송합니다, 귀하의 질문은 나에게 분명하지 않다). 올바른 이름은 keys_and_values이어야합니다. 따라서

+0

루비 대회를 놓친 것 같지 않아! 나는 그것을 해결하기 위해 너무나 오랫동안 노력했다. 내가 왜 정의되지 않은 메소드 오류를 계속 가져 왔는지 알 겠어. 키나 값을 정의하지 않았다. 감사. – 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]] 
관련 문제