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
Ruby on rails 如何在JSON中获取对象数组的某些属性_Ruby On Rails_Arrays_Json_Ruby - Fatal编程技术网

Ruby on rails 如何在JSON中获取对象数组的某些属性

Ruby on rails 如何在JSON中获取对象数组的某些属性,ruby-on-rails,arrays,json,ruby,Ruby On Rails,Arrays,Json,Ruby,我有一个JSON对象数组 arr = [{'a'=> 1, 'b'=> 2, 'c'=> 3}, {'a'=> 4, 'b'=> 5,'c'=> 6}, {'a'=> 4, 'b'=> 5,'c'=> 6}] 但我想要一个只选择“a”和“c”属性的新数组: new_arr = [{'a'=> 1, 'c'=> 3}, {'a'=> 4,'c'=> 6}, {'a'=> 4,'c'=> 6}] 我尝试使

我有一个JSON对象数组

arr =  [{'a'=> 1, 'b'=> 2, 'c'=> 3}, {'a'=> 4, 'b'=> 5,'c'=> 6}, {'a'=> 4, 'b'=> 5,'c'=> 6}]
但我想要一个只选择“a”和“c”属性的新数组:

new_arr = [{'a'=> 1, 'c'=> 3}, {'a'=> 4,'c'=> 6}, {'a'=> 4,'c'=> 6}]
我尝试使用map,但仅对1个属性
arr.map{| I | I['a']}
。 我缺少什么或有什么建议?

利用并传递要选择的属性

arr =  [{'a'=> 1, 'b'=> 2, 'c'=> 3}, {'a'=> 4, 'b'=> 5,'c'=> 6}, {'a'=> 4, 'b'=> 5,'c'=> 6}]

arr.map{|a| a.slice('a', 'c')}
#=> [{"a"=>1, "c"=>3}, {"a"=>4, "c"=>6}, {"a"=>4, "c"=>6}]
使用并传递要选择的属性

arr =  [{'a'=> 1, 'b'=> 2, 'c'=> 3}, {'a'=> 4, 'b'=> 5,'c'=> 6}, {'a'=> 4, 'b'=> 5,'c'=> 6}]

arr.map{|a| a.slice('a', 'c')}
#=> [{"a"=>1, "c"=>3}, {"a"=>4, "c"=>6}, {"a"=>4, "c"=>6}]
你可以用

你可以用


因为已经有答案描述了
切片
的用法,除了
,我想在这里提供另一种方法:

arr.map{|h| {'a' => h['a'], 'c' => h['c'] } }
#=> [{"a"=>1, "c"=>3}, {"a"=>4, "c"=>6}, {"a"=>4, "c"=>6}]
注意,
h
这里是在
map
中迭代的数组的一个特定对象,它是一个
散列


不过要输入的代码要多一些。您也可以使用
select

既然已经有答案描述了
slice
的用法,除了
,我想在这里提供另一种方法:

arr.map{|h| {'a' => h['a'], 'c' => h['c'] } }
#=> [{"a"=>1, "c"=>3}, {"a"=>4, "c"=>6}, {"a"=>4, "c"=>6}]
注意,
h
这里是在
map
中迭代的数组的一个特定对象,它是一个
散列


不过要输入的代码要多一些。你也可以使用
select

唯一的缺点是如果有
{'d'=>5}
你也会得到它。在这种情况下,它应该是
e。除了('b','d')
唯一的缺点是如果有
{'d'=>5}
你也会得到它。在这种情况下,它应该是
e。除了('b','d'))
ar
应该是
h
,这些是散列,而不是数组。@Stefan:为更清晰起见进行了编辑
ar
应该是
h
,这些是散列,而不是数组。@Stefan:为更清晰起见进行了编辑