gpt4 book ai didi

javascript - 过滤数组并匹配至少一个条件

转载 作者:搜寻专家 更新时间:2023-10-30 22:54:25 26 4
gpt4 key购买 nike

我想解决以下问题:我想使用 Vue.js 和 lodash(或纯 JavaScript)按特定条件过滤数组。

我的元素

  • 我得到了一个 Items 列表。每个项目都包含(可选)类别
  • 对象Car 可以有一个类别

对象数组

"data": [
{
"id": 1,
"title": "Item 1",
"categories": [
{
"id": 4,
"title": "category 4",
"description": "",
},
{
"id": 5,
"title": "category 5",
"description": "",
}
]
},
{
"id": 2,
"title": "Item 2",
"categories": []
},
{
"id": 3,
"title": "Item 3",
"categories": []
}
]

对象汽车

{
"category": {
"id": 5,
"title": "category 5",
"description": ""
},
"title": "Test"
}

我的目标

我只想显示那些 Items,它们至少通过了这些规则中的一个:

  • Item 至少有一个 categoryCarcategory 相匹配
  • Item 没有 category

我的方法

我正在使用一个计算的值来过滤this.items:

computed: {
filteredItems: function () {
let vm = this;
return _.filter (this.items, function (item) {
return _.includes (item.categories, vm.car.category );
});
}
},

当前结果:

filteredItems 始终为空。

最佳答案

您需要对类别 进行更多级别的检查,因为您需要针对其中的每个项目进行测试。使用常规 javascript,您可以使用 some() 来做到这一点如果任何项目匹配,它将返回 true。

let data = [{"id": 1,"title": "Item 1","categories": [{"id": 4,"title": "category 4","description": "",},{"id": 5,"title": "category 5","description": "",}]},{"id": 2,"title": "Item 2","categories": []},{"id": 3,"title": "Item 3","categories": []}]
let car = {"category": {"id": 5,"title": "category 5","description": ""},"title": "Test"}

let filtered = data.filter(item => !item.categories || item.categories.length === 0 || item.categories.some(cat=> cat.id === car.category.id))
console.log(filtered)

关于javascript - 过滤数组并匹配至少一个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56796020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com