【发布时间】:2019-08-22 05:49:13
【问题描述】:
我会尽量概括地提出问题,任何语言的回复都可以。
假设有几组不同大小,每组都包含与类别有关的任意值:
var colors = ["red", "yellow", "blue"] // 3 items
var letters = ["A", "B", "C", ... ] // 26 items
var digits = [0, 1, 2, 3, 4, ... ] // 10 items
... // each set has fixed amount of items
我已经拥有的这个主列表中的每个对象(我想以某种方式重组以优化搜索)都有属性,每个对象都是这些集合之一的选择,例如:
var masterList = [
{ id: 1, color: "red", letter: "F", digit: 5, ... },
{ id: 2, color: "blue", letter: "Q", digit: 0, ... },
{ id: 3, color: "red", letter: "Z", digit: 3, ... },
...
]
搜索的目的是从主列表中创建一个新的可接受对象列表。该程序将根据给定的搜索条件过滤主列表,对于每个属性,这些条件都包含一个可接受值的列表。
var criteria = {
color: ["red", "yellow"],
letter: ["A", "F", "P"],
digit: [1, 3, 5],
...
};
我想某种树是最适用的。我的理解是它需要平衡,因此根节点将是“中值”对象。我想每个级别都将由其中一个属性定义,因此当程序从根搜索时,它只会继续符合搜索条件的分支,每次都会消除不适合给定特定属性的对象那个级别。
但是,我了解此主列表中的许多对象将具有匹配的属性值。这以可能有助于快速搜索的图形方式将它们连接起来。
我当前的搜索算法相当直观,只需按原样使用主列表即可。程序
- 遍历搜索条件中的属性,
- 每个属性都遍历主列表,消除了许多没有匹配属性的对象,并且
- 最终删除所有不符合条件的对象。肯定有一些更快的过滤系统涉及到更有条理的数据结构。
我可以从这里去哪里?我对本地数据库开放,而不是我想的另一个数据结构 - GraphQL 看起来很有趣。这是我的第一个 Stack Overflow 问题,所以对于任何不礼貌的行为,我深表歉意????
【问题讨论】:
-
这里有更新吗?
标签: object search data-structures graph tree