我一直在努力解决这个问题:完成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})
答案 0 :(得分: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
。
答案 1 :(得分: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]]
答案 2 :(得分: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]]