【发布时间】:2016-06-22 05:26:04
【问题描述】:
这个 Meteor 客户端应用程序“主要使用智能手机”需要以键入文本的形式接受用户输入并过滤大约 500 个底部节点的 json 数据,返回底部节点文本包含用户输入的树的分支文本。
{
"people": {
"honour": [
[
"family"
],
[
"friends"
]
],
"respect": [
[
"one another"
]
]
},
"animals": {
"eat": [
[
"row food"
]
]
}
}
当用户输入'a'时,代码需要给出出现的树:
人、荣誉、家庭。
人,尊重,彼此
当用户输入“o”时,输出应该是:
人,尊重,彼此。
动物,吃,排食物。
当用户输入 'oo' 时,输出应该是:
动物,吃,排食物。
当用户输入“f”时,输出应该是:
人、荣誉、家庭。
人,荣誉,朋友。
动物,吃,排食物。
我的选择是:
- 将 json 转换为 javascript 对象,并使用少量循环编写搜索/查找/匹配逻辑。
- 使用defiantjs,我以前从未使用过,必须学习。
- 将json导入mongodb并过滤数据库。
- 您还有什么建议。
哪种方法最适合快速获得结果且易于维护?谢谢
【问题讨论】:
-
这个对象可以包含多少个键?几十、几百、几千?
-
哎呀,没关系。错过了 500 个节点线。
-
为什么不把JSON文件的结构倒过来呢?把最后一个搜索词放在前面,然后你只需要搜索第一层而不是递归地深入三层。它可能会产生更大的文件,重复次数更多,但会提高性能。 (无论您选择哪种方式,我都看不到您当前的实现是高性能的)
-
在
honour下有一个数组,每个数组都有一个项目。这是否应该是我们应该只是一个字符串数组?如果是前者,那么当叶子节点中有多个项目时,它应该如何表现? -
@dave 是的。没错,有数组,它们有不同数量的输入。我再举一个例子来回答你的第二个问题。
标签: javascript json meteor