从不可变的地图列表中按键获取值

时间:2017-05-30 10:09:08

标签: javascript immutable.js

我有一个不可变的地图列表,其中包含(以及其他键)名称'键。我想获得一系列名字。

我的地图列表如下所示:[{'name': 'John', 'age': 23}, {'name': 'Eli', 'age': 30}]

我试过这样做:

var result = myObject.map(function(a) {return a.name;});

但那不起作用。没有返回数组。

如果我result.toArray,我会[undefinedundefined]

1 个答案:

答案 0 :(得分:3)

假设您有一个不可变映射列表,您需要使用get函数来检索名称。所以以下内容应该有效:

const list = Immutable.fromJS([{ 'name': 'John', 'age': 23 }, { 'name': 'Eli', 'age': 30 }]);
const result = list.map(a => a.get('name'))); 
console.log(result); // ["John", "Eli"]

访问地图的值就好像它是一个普通的javascript对象一样无效:

const map = Immutable.Map({ name: 'John', age: 23 });
console.log(map.name) // undefined
console.log(map.get('name')) // John

但是,假设所有名称都已修复,您可以按如下方式使用不可变记录:

const Person = Immutable.Record({ name: '', age: 0 });
const person = new Person({ name: 'John', age: 23 });
console.log(person.name) // John
console.log(person.get('name')) // John