我有一个数组
array_hash = [
{
"array_value" => 1,
"other_values" => "whatever",
"inner_value" => [
{"iwantthis" => "forFirst"},
{"iwantthis2" => "forFirst2"},
{"iwantthis3" => "forFirst3"}
]
},
{
"array_value" => 2,
"other_values" => "whatever2",
"inner_value" => [
{"iwantthis" => "forSecond"},
{"iwantthis2" => "forSecond2"},
{"iwantthis3" => "forSecond3"}
]
},
]
我想删除内部值或弹出它(我更喜欢pop)。 所以我的输出应该是这样的:
array_hash = [
{
"array_value" => 1,
"other_values" => "whatever"
},
{
"array_value" => 2,
"other_values" => "whatever2"
},
]
我尝试了delete_if
array_hash.delete_if{|a| a['inner_value'] }
但它删除了数组中的所有数据。有没有解决方案?
答案 0 :(得分:1)
试试这个:
array_hash.map{ |a| {'array_value' => a['array_value'], 'other_values' => a['other_values'] }}
答案 1 :(得分:1)
您告诉ruby删除所有具有名为 inner_value 键的哈希值。这就解释了为什么阵列仍然是空的。
你应该做的是:
array_hash.each { |x| x.delete 'inner_value' }
表示:对于此数组中的每个哈希,请删除 inner_value 键。
答案 2 :(得分:1)
我找到了,
array_hash_popped = array_hash.map{ |a| a.delete('inner_value') }
这将弹出(因为我想要问题中所述的pop)inner_value out,因此内部值将从array_hash中减少/删除。