2016-09-15 6 views
1

私は、アレイ、私は内側の値を削除したり、(私はポップを好む)、それを飛び出したいは全体ではなく、ハッシュRUBY

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"} 
    ] 
    }, 
] 

を持っています。 は、だから私の出力はこのようになります。

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

配列のすべての要素を反復処理し、個々のハッシュで 'delete_if'を呼び出す必要があります。 – UnholySheep

答えて

1

まあ、私はこれが(私が質問に記載されているようにポップアップ表示したいので)inner_valueを飛び出しますので、内側の値はarray_hashから削除/縮小されます

array_hash_popped = array_hash.map{ |a| a.delete('inner_value') } 

、それを発見しました。

+0

「ポップ」って何を意味するのか分かりません。あなたはそれを説明できますか? – GolfWolf

+0

これは、変数から特定の要素を削除し、別の変数に格納することを意味します。 – user1735921

+0

OK、わかりました。 – GolfWolf

1

はこれを試してみてください。

array_hash.map{ |a| {'array_value' => a['array_value'], 'other_values' => a['other_values'] }} 
+0

良い解決策、私は+ 1ed。しかし、私はポップが好きです。私のソリューションをチェックすると、それも同様にポップアップします。 – user1735921

1

あなたはinner_valueと呼ばれるキーを持つすべてのハッシュを削除するにはルビーを語っています。これは、配列が空のままである理由を説明しています。あなたはおそらく代わりに何をすべき

は次のとおりです。

array_hash.each { |x| x.delete 'inner_value' } 

意味:この配列内の各ハッシュのために、inner_valueキーを消去します。

関連する問題