2016-09-16 10 views
0

私はImmutable.jsを学習しています。私はと呼ばれることにオブジェクトを持っている:ネストされた不変のマッププロパティにアクセス

myObj.get('people')

は、次の値を返します。

[ 
    { 
    "name": "John Stevenson", 
    "country": "Sweden" 
    }, 
    { 
    "name": "John Silva", 
    "country": "Colombia" 
    }, 
    { 
    "name": "John Van der Bier", 
    "country": "Holland" 
    }, 
    { 
    "name": "John McDonald", 
    "country": "Scotland" 
    } 
] 

私は私だけcountryを見ることができるように、このオブジェクトの内部で取得しようとしている:

myObj.getIn(['people', 'country']) // undefined

私は何が欠けていますか?

+0

を使用する必要があります大文字と小文字の区別はありません。あなたの最終目標は何ですか?一人一人の国だけの配列が欲しいですか? – finalfreq

答えて

2

getIn(['people', 'country'])の結果はpeoplecountryプロパティにアクセスしようとしています。これは配列であり、countryという名前のプロパティはありません。それは人の上にループしたいように思えるし、あなたがmapで行うことができます彼らの国の配列を、構築:

var countries = myObj.get('people').map(person => { 
    return person.country 
}) 
+0

こんにちは、ありがとう! –

0

前の回答は配列を返します。 ` しかし、あなたの中にあなたが本当に不変を使用することを望んでいる場合は、オブジェクトは、この ` {::{国somecountry '}人}のように形成された場合、あなたが記述アクセサは次のようになり

import { fromJS } from 'Immutable'; 
const immutableObj = fromJS(myObj); 

//map() or forEach() here 
var countries = immutableObj.map(person => { 
    return person.get('country'); 
}) 
関連する問題