您可以使用in-memory-faceted-search npm 包扫描对象数组并生成包含所有可能级别和组合的分面搜索索引。
例子:
const data = require("./sample.json")
const facetedSearch = require("in-memory-faceted-search")
const facets = [
{ name: "Colors", field: "color" },
{ name: "Sizes", field: "size" },
{ name: "Status", field: "active", map: (item) => (item.active ? "Active" : "Disabled") },
{ name: "Ages", field: "age", map: (item) => (item.age > 25 ? "Over 25" : "Under 25") }
]
const tree = facetedSearch({ data, facets })
console.log(JSON.stringify(tree, null, 4))
输出:
{
"count": 100,
"Colors": {
"red": {
"count": 27
},
"blue": {
"count": 25
},
"green": {
"count": 23
},
"brown": {
"count": 25
}
},
"Sizes": {
"big": {
"count": 29
},
"small": {
"count": 34
},
"medium": {
"count": 37
}
},
"Status": {
"Disabled": {
"count": 56
},
"Active": {
"count": 44
}
},
"Ages": {
"Over 25": {
"count": 72
},
"Under 25": {
"count": 28
}
}
}
查看 README 文件以获取更多示例和更深层次