javascript - 如何根据内部数组的值过滤二维数组
问题描述
我有一个二维数组,需要根据内部数组的数据进行过滤
我尝试映射然后过滤内部数组的数据 - 但后来我丢失了第一个数组中的数据。
我在下面编写了一个过滤器函数,但它不能正常工作 - 查看过滤数据变量
var data =
[
{
"batch_id": "1",
"data": [
{
"identifier": "aa",
"type": "video"
},
{
"identifier": "ab",
"type": "image"
}
],
"internal_batch_id": 72
},
{
"batch_id": "2",
"data": [
{
"identifier": "a",
"type": "image"
},
{
"identifier": "b",
"type": "image"
}
],
"internal_batch_id": 72
}
]
var type = 'video'
var filteredData =
data.map((item, i) => {
return item.data.filter((item1, idx) => {
return item1.type.toUpperCase() === type.toUpperCase()
})
})
我想要发生的是只显示 type === 'video' 的项目。所以数据会变成
{
"batch_id": "1",
"data": [
{
"identifier": "aa",
"type": "video"
}
],
"internal_batch_id": 72
}
解决方案
我不确定您的预期输出应该是什么。要么,您正在寻找使用带有过滤器的地图:
按每个类型属性过滤嵌套数据道具
var data = [
{
batch_id: '1',
data: [{ identifier: 'aa', type: 'video' }, { identifier: 'ab', type: 'image' }],
internal_batch_id: 72
},
{
batch_id: '2',
data: [{ identifier: 'a', type: 'image' }, { identifier: 'b', type: 'image' }],
internal_batch_id: 72
}
]
console.log(data.map(o => ({...o, data:o.data.filter(v => v.type === 'video')})))
或者您正在寻找使用过滤器的一些:
将整个数据对象过滤为具有“视频”类型的对象
var data = [
{
batch_id: '1',
data: [{ identifier: 'aa', type: 'video' }, { identifier: 'ab', type: 'image' }],
internal_batch_id: 72
},
{
batch_id: '2',
data: [{ identifier: 'a', type: 'image' }, { identifier: 'b', type: 'image' }],
internal_batch_id: 72
}
]
console.log(data.filter(o => o.data.some(v => v.type === 'video')))
或两者:
过滤整个数据对象,并过滤嵌套数据。
var data = [
{
batch_id: '1',
data: [{ identifier: 'aa', type: 'video' }, { identifier: 'ab', type: 'image' }],
internal_batch_id: 72
},
{
batch_id: '2',
data: [{ identifier: 'a', type: 'image' }, { identifier: 'b', type: 'image' }],
internal_batch_id: 72
}
]
console.log(
data.reduce((a, o) => {
const f = o.data.filter(v => v.type === 'video')
return (f.length && a.push({ ...o, data: f }), a)
}, [])
)
推荐阅读
- api - 如何使用 Test Rail API 从运行中获得超过 250 个的列表测试
- html - 悬停时在卡片中显示内容
- configuration - 运行 Go 程序的实现启动,输出 exec: not started
- assembly - 如果硬件不支持trap指令,但支持中断和异常,是否可以跳转到内核模式
- python - 如何组合列表(前三列)以生成python最后一列中显示的输出
- reactjs - 如何在页面加载时选择 ReactSelect 中的选项
- apache2 - 在 Apache 2 Debian 11 上启用 Xdebug
- javascript - 如何为 Javascript 应用正则表达式
- javascript - 如何检查名称是否已存在于 Firebase 实时数据库(Firebase 和 JS)中
- oracle - 我遇到的 PL/SQL 查询错误。我不知道可能出了什么问题