这里提供一个使用JavaScript的示例代码,展示如何按照数组中的对象筛选文档:
// 示例文档数组
const documents = [
{ id: 1, title: "文档1", tags: ["标签1", "标签2"] },
{ id: 2, title: "文档2", tags: ["标签2", "标签3"] },
{ id: 3, title: "文档3", tags: ["标签1", "标签3"] },
{ id: 4, title: "文档4", tags: ["标签4", "标签5"] },
];
// 示例筛选条件数组
const filterConditions = [
{ key: "tags", value: "标签1" },
{ key: "tags", value: "标签2" },
];
// 使用筛选条件数组过滤文档数组
const filteredDocuments = documents.filter((document) => {
return filterConditions.every((condition) => {
return document[condition.key].includes(condition.value);
});
});
// 输出筛选结果
console.log(filteredDocuments);
在上述示例代码中,我们有一个文档数组documents
,每个文档都有一个tags
属性,它是一个包含标签的字符串数组。我们还有一个筛选条件数组filterConditions
,每个条件对象都有一个key
属性和一个value
属性,用于指定要筛选的属性和属性值。
然后,我们使用filter()
方法对文档数组进行筛选。对于每个文档,我们使用every()
方法遍历筛选条件数组,并检查文档的相应属性是否包含筛选条件的值。只有当所有条件都满足时,every()
方法返回true
,文档被保留在筛选结果中。
最后,我们输出筛选结果filteredDocuments
,它包含符合所有筛选条件的文档。在这个示例中,筛选结果为:
[
{ id: 1, title: "文档1", tags: ["标签1", "标签2"] }
]
这是因为只有第一个文档同时包含"标签1"和"标签2"。