访问嵌套的Immutable Map属性

时间:2016-09-16 03:20:50

标签: javascript immutable.js

我正在学习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

我错过了什么?

2 个答案:

答案 0 :(得分:2)

您的代码问题是getIn(['people', 'country'])的结果是试图访问country people的{​​{1}}属性,这是一个数组而且没有有一个名为country的属性。似乎想要遍历人并构建他们所在国家/地区的数组,您可以使用map执行此操作:

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

答案 1 :(得分:0)

上一个答案将返回一个数组。如果你真的想要使用Immutable,你应该使用

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

//map() or forEach() here
var countries = immutableObj.map(person => {
    return person.get('country');
})