2017-05-30 62 views
0

我有一個不可變的地圖列表,其中包含(其他鍵)'名稱'鍵。我正在嘗試獲取一組名稱。從不變的地圖列表中按鍵獲取值

我的地圖列表看起來是這樣的:[{'name': 'John', 'age': 23}, {'name': 'Eli', 'age': 30}]

我也試着這樣做:

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

但不工作。沒有返回數組。

如果我做result.toArray,我得到[undefinedundefined]

+0

您需要將'map'的返回值賦給某個​​變量。 –

+4

看到你的代碼正在工作https://fiddle.jshell.net/bgesk3u6/ – prasanth

+0

你不需要'result.toArray'。結果本身就是一個數組。 –

回答

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