我正在做一个项目在vue,我正试图从一个json中有一个数组内的对象数组的产品列表过滤。我有一个具有不同月份的选择器,以便能够按每个产品具有的月份数进行筛选,并仅显示包含这些月份的产品。
[
{
"active": true,
"installment": [
[
{
"product": "Ipad",
"months": 12,
"installment": 63.94
}
],
[
{
"product": "Ipad",
"months": 6,
"installment": 63.94
}
]
]
},
{
"active": true,
"installment": [
[
{
"product": "Iphone",
"months": 12,
"installment": 63.94
}
],
[
{
"product": "Iphone",
"months": 6,
"installment": 63.94
}
]
]
},
{
"active": true,
"installment": [
[
{
"product": "Mac",
"months": 18,
"installment": 63.94
}
]
]
}
]
如果我在月份选择器中选择12个月我想要获取的json就是这个
[
{
"active": true,
"installment": [
[
{
"product": "Ipad",
"months": 12,
"installment": 63.94
}
]
]
},
{
"active": true,
"installment": [
[
{
"product": "Iphone",
"months": 12,
"installment": 63.94
}
]
]
}
]
我该怎么做?
我相信有一种更优雅的方法,但这里有一种方法:
var arr = [
{
"active": true,
"installment": [
[
{
"product": "Ipad",
"months": 12,
"installment": 63.94
}
],
[
{
"product": "Ipad",
"months": 6,
"installment": 63.94
}
]
]
},
{
"active": true,
"installment": [
[
{
"product": "Iphone",
"months": 12,
"installment": 63.94
}
],
[
{
"product": "Iphone",
"months": 6,
"installment": 63.94
}
]
]
},
{
"active": true,
"installment": [
[
{
"product": "Mac",
"months": 18,
"installment": 63.94
}
]
]
}
]
var result = arr.reduce((acc, curr) => {
if (curr.installment.flat().some(i => i.months == 12)) {
acc.push({
...curr,
installment: [curr.installment.flat().filter(i => i.months == 12)]
})
}
return acc
}, [])
console.log(result)