2017-09-15 76 views
0

我最初返回對象的數組,沒有密鑰這樣每個對象的API /終極版陣列:陣營與鍵映射

[ 
{ 
"id": 4311, 
"title": "C43- Miami Bow Cabinet Handles High Quality Stainless Steel (Polished) Handles", 
"liked": false 
}, 
{ 
"id": 2235, 
"title": "C43- Miami Bow Cabinet Handles High Quality Stainless Steel (Brushed) Handles", 
"liked": false 
} 
] 

但是它會幫助我的應用程序很多,如果我可以存儲此數據與ID爲每個嵌套對象的關鍵,我已經更新了我的API,以這樣的返回數據:

{ 
"2235": { 
"title": "C43- Miami Bow Cabinet Handles High Quality Stainless Steel (Brushed) Handles", 
"liked": false 
}, 
"4311": { 
"title": "C43- Miami Bow Cabinet Handles High Quality Stainless Steel (Polished) Handles", 
"liked": false 
} 
} 

但是現在我得到反應的錯誤 - 「props.posts.map不是一個函數'

我不明白什麼改變了數據,doesnt redux爲每個對象分配一個數字鍵,如果一個沒有設置反正呢?

+2

這不是一個數組anymo回覆。但是您可以使用[Object.entries](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)或[Object.keys](https:// developer .mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) –

+0

我想你想看看[normalizr](https://github.com/paularmstrong/normalizr) – Okazari

回答

1

map是指具有陣列只在這裏描述https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

但是上班,你可以使用lodashmap方法,也適用於標準化的對象跟你的一樣。

舉個例子,你可以使用:

const newArray = _.map(data, (item, key) => { 
    // key is the item's id 
    return item 
}) 

如果使用第三方模塊是不是一種選擇,你可以用Object.keys工作,並得到了同樣的結果:

const newArray = Object.keys(data).map(key => data[key]) 
0

對於存儲此數據與id作爲每個嵌套對象的關鍵,可以使用reduce:

arr.reduce(function(map, obj){ 
    map[obj.id] = { 
    title: obj.title, 
    liked: obj.liked 
} 
return map 
}, {})