Ruby on rails 如何在JSON中获取对象数组的某些属性
我有一个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}] 我尝试使
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:为更清晰起见进行了编辑