社區,如何實現方法「m_met」,它將重組散列數組(具有相同的大小和相同的「鍵」)到第一個元素將是「鍵」數組的形式和休息 - 每個散列的「值」。
例子:紅寶石。用於散列數組的「魔術方法」
m_met([{a: 1, b: 2, c: 3 }, {a: 4, b: 5, c: 6}])
# => [[:a, :b, :c], [1, 2, 3], [4, 5, 6]]
謝謝!
社區,如何實現方法「m_met」,它將重組散列數組(具有相同的大小和相同的「鍵」)到第一個元素將是「鍵」數組的形式和休息 - 每個散列的「值」。
例子:紅寶石。用於散列數組的「魔術方法」
m_met([{a: 1, b: 2, c: 3 }, {a: 4, b: 5, c: 6}])
# => [[:a, :b, :c], [1, 2, 3], [4, 5, 6]]
謝謝!
h = [{a: 1, b: 2, c: 3 }, {a: 4, b: 5, c: 6}]
h.flat_map { |j| [j.keys, j.values] }.uniq
# => [[:a, :b, :c], [1, 2, 3], [4, 5, 6]]
UPDATE
h = [{a: 1, b: 2, c: 3 }, {a: 1, b: 2, c: 3}]
[h.first.keys].concat(h.map(&:values))
# => [[:a, :b, :c], [1, 2, 3], [1, 2, 3]]
h = [{a: 1, b: 2, c: 3 }, {a: 4, b: 5, c: 6}]
[h.first.keys].concat(h.map(&:values))
# => [[:a, :b, :c], [1, 2, 3], [4, 5, 6]]
如果沒有額外的假設也可能是這樣的:
hs = [{a: 1, b: 2, c: 3 }, {a: 4, b: 5, c: 6}]
ks = hs.first.keys
[ks] + hs.map{ |h| h.values_at(*ks)}
UPDATE坦白說,我寧願二號線(所以我不需要等等)
ks = hs.flat_map(&:keys).uniq
感謝Priti,回答N2O-boost =)! –
@ SergRa6n * N2O-boost *表示? :))) –
這意味着「非常快速的迴應」)) –