【问题标题】:Get key/value pairs as arrays将键/值对作为数组获取
【发布时间】:2014-01-31 07:24:59
【问题描述】:

我一直在努力解决这个问题:完成 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})

【问题讨论】:

    标签: ruby arrays split slice


    【解决方案1】:
    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

    【讨论】:

    • 不敢相信我错过了 Ruby 大会!我花了太长时间试图解决它的标志!我明白为什么我一直收到未定义的方法错误 - 我没有定义键或值。谢谢。
    【解决方案2】:

    有内置的方法:

    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]]
    

    【讨论】:

      【解决方案3】:
      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]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-28
        • 2011-03-31
        • 2015-01-15
        • 1970-01-01
        相关资源
        最近更新 更多