私はこのような非正規化値それぞれ有するハッシュの配列を有する:検索アレイ
arr = [{
id: 0,
type: 'character',
person: {
name: 'Steve Rogers',
weapon: 'Shield',
known: true
}
},
{
id: 1,
type: 'organization',
company: "Pym Industries",
tech: 'Shrinking suit'
},
{
id: 2,
type: 'character',
person: {
name: 'Tony Stark',
weapon: 'Ironman Suit',
known: false
}
}]
ハッシュの一部が異なっているが。私は人が知っている、つまりarr.person.known
がtrue
であるハッシュのサブアレイを取得したいと考えています。私が試した
subarr = [{
id: 0,
type: 'character',
person: {
name: 'Steve Rogers',
weapon: 'Shield',
known: true
}
}]
::のように結果がでなければなりません
b = arr.select{|x| x.person.known}
b = arr.reject{|x| if x.person then x.person.known}
しかし、私はNoMethodError: undefined method `person' for Hash:0x007fc5f6f587f0
にぶつかります。
注 '編曲:[ '人']'ことと 'arr.person'はJavaScriptではなく、Rubyで同じものです。ハッシュはオブジェクトと同じではありません。 Rubyハッシュをそのように振る舞わせるためにできることはありますが、微妙なバグでも微妙でもないバグの原因となる可能性があるため、推奨されていません。 – Amadan
@Amadanそれを理解する。私は実際にレールの関連レコードで作業しています。各エントリhas_one personとbelongs_to:エントリー、inverse_of::エントリー、オプション:true – RedOster
"ハッシュの配列"と言って、それを "ハッシュ"とタグ付けしました。選択{| x | x&.person&.known} 'が最も明瞭です。 – Amadan