【发布时间】:2019-02-09 08:34:06
【问题描述】:
我正在尝试从 json 对象返回一个数组。 每个对象都有一些数据和另一个嵌套数组/对象
像这样:
{
"data": [
{
"name": "name",
"id": "id",
"amount": 4000,
"items": [
{
"number": 12,
"isAvailable": true,
},
{
"number": 15,
"isAvailable": true,
},
{
"number": 16,
"isAvailable": true,
},
{
"number": 17,
"isAvailable": true,
}
]
},
{
"name": "name2",
"id": "id2",
"amount": 3000,
"items": [
{
"number": 12,
"isAvailable": true,
},
{
"number": 15,
"isAvailable": true,
},
{
"number": 16,
"isAvailable": false,
},
{
"number": 17,
"isAvailable": true,
}
]
},
{
"name": "name4",
"id": "id4",
"amount": 1200,
"items": [
{
"number": 12,
"isAvailable": true,
},
{
"number": 15,
"isAvailable": true,
},
{
"number": 16,
"isAvailable": true,
},
{
"number": 17,
"isAvailable": true,
}
]
}
]
}
我想检查所有对象,看看这些对象中是否有包含"isAvailable": false 的项目
如果一个项目不可用,我需要从数组中删除父对象(所以不是项目数组,而是上面的完整对象。
然后我想返回这个对象被移除的数组。
我通过使用 ES6 findIndex 来实现这一点
array.findIndex(object => object.items.some(item => !item.isAvailable));
这将返回拥有它的父数组的索引,我可以使用它来拼接数组。但这仅适用于单个对象。如果我有另一个对象,它仍然会返回第一个索引。
如何根据条件检查是否存在多个对象并将它们从数组中删除?
【问题讨论】:
-
您的对象语法无效,一些数字后面有引号:
"number": 12" -
使用
.filter而不是.findIndex -
@LucaKiebel 哎呀,这是一个用户错误。这是虚拟数据 :) 感谢您的关注
标签: javascript arrays json