【发布时间】:2021-11-17 18:31:47
【问题描述】:
我正在尝试比较、查找和推送数组中的数据。但是出现以下错误
Error => TypeError: undefined is not an object (evalating 'data[index].push')
我有以下 JSON/数组
[
{
"category":"Super",
"id":"1",
"images":[],
"status":"open",
"url":"some url here"
},
{
"category":"Pizza",
"entitlement_id":"pizza_pack_ent",
"id":"2",
"images":[],
"package_id":"pizza_pack_single",
"status":"locked",
"url":"some url here"
}
]
我想将packages 对象推送到匹配类别中,因此 json/array 将如下所示
[
{
"category":"Super",
"id":"1",
"images":[],
"status":"open",
"url":"some url here"
},
{
"category":"Pizza",
"entitlement_id":"pizza_pack_ent",
"id":"2",
"images":[],
"package_id":"pizza_pack_single",
"status":"locked",
"url":"some url here",
"packages": [
{
"id":"abcds"
},
{
"id": "xyz"
}
]
}
]
以下是我尝试做的代码:
data.forEach((category, index) => { //data is main json/array in which I want to push packages
packages.forEach((pckg, idx) => {
if(pckg.identifier === category.package_id){
// data[category].push(pckg); //not worked
data[index].push(pckg); //not worked either
}
})
})
console.log(data);
【问题讨论】:
-
data是一个对象数组,所以data[index]将是一个对象。你不能推送到一个对象。 -
那么如何将该对象转换为数组呢?
-
或者解决方法是什么?
-
根据您需要的结果,您不想将对象“转换”为数组。您想使用空数组(如果不存在)在该对象上创建一个
package属性并推送到该对象 -
附带说明,还请注意,如果
pckg.identifier和category.package_id都未定义,则评估if(pckg.identifier === category.package_id)可能会意外返回true。因此,如果您有缺少package_id的类别(例如示例数组中的第一个元素),您可能也需要解决这个问题。
标签: javascript reactjs react-native jsx