我有一个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不是函数'
我无法理解数据的变化,如果没有设置,还是还没有为每个对象分配一个数字键吗?
答案 0 :(得分:1)
map
仅适用于此处https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
但是,您可以使用lodash
的{{1}}方法,该方法也适用于与您标准化对象相同的标准化对象。
例如,您可以使用:
map
如果不能使用第三方模块,您可以使用const newArray = _.map(data, (item, key) => {
// key is the item's id
return item
})
并获得相同的结果:
Object.keys
答案 1 :(得分:1)
要存储此数据,并将id作为每个嵌套对象的键,可以使用reduce:
arr.reduce(function(map, obj){
map[obj.id] = {
title: obj.title,
liked: obj.liked
}
return map
}, {})