Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将散列值映射到数组中的键值对_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 将散列值映射到数组中的键值对

Ruby on rails 将散列值映射到数组中的键值对,ruby-on-rails,ruby,Ruby On Rails,Ruby,预期产出: a = {one: 2, two: 3}.map{|k,v| {k => v}} # => [{:one=>2}, {:two=>3}] a[0] # => {:one=>2} a[0].class # => Hash a[0].key # ~> ArgumentError: wrong number of arguments (given 0, expected 1) 这将导致[0]。键>>:1 为什么我不

预期产出:

a = {one: 2, two: 3}.map{|k,v| {k => v}}  # => [{:one=>2}, {:two=>3}]

a[0]        # => {:one=>2}
a[0].class  # => Hash
a[0].key    # ~> ArgumentError: wrong number of arguments (given 0, expected 1)
这将导致[0]。键>>:1

为什么我不能获取数组中第一项的键值

解决方案:键。首先。

检查时,hashkey需要一个参数,该参数是您要为其查找对应键的值:

[{one: 2}, {two: 3}]

搜索是线性的,使用rb\u hash\u foreach对哈希中的对进行迭代。

OP可能正在查找[0]。keys.first=>:1。我们不能从这个问题上说出来。你搞错了:一和一。你应该写最后一行a[0].key=>:one或a[0].key=>:one。我听不懂上面语句中的一个词,但它们肯定不包含问题,所以被否决。[{one:2},{two:3}]与刚才用[{one=>2},{:two=>3}的替代语法写的值相同。
p a[0].key(2) # => :one