【发布时间】:2014-06-24 18:22:17
【问题描述】:
我有一个json数据如下
var data=[
{
Name: "AAA",
Phone : "1"
},
{
Name: "BBB",
Phone : "2"
},
|
|
|
|
|,
{
Name: "Z50000",
Phone : "50000"
}
]
我正在搜索包含特定关键字(姓名/电话)的记录。我为此使用了javascript。我尝试了以下方式
var searchKeyword=document.getElementById("txtSearchKeyword").value;
var searchData=new Array();
for(var i=0;i<data.length;i++){
if(data.Name.index(searchKeyword) !=-1 || data.Phone.index(searchKeyword) !=-1){
searchData.push(data[i]);
}
}
一切正常,但需要花费大量时间。当我们拥有大量数据时,如何高效快速地搜索?
【问题讨论】:
-
您是否考虑过将其转换为 JSON 字符串并使用正则表达式?
-
@Hayes,可能值得一试,但似乎不太可能更快,当然也不会更容易;在找到对象后,必须以某种方式从字符串中提取对象。
-
我无法相信正则表达式在 (a) 巨大的字符串和 (b) 获取数据所需的回溯上会更快。
-
是的,我只是在吐槽那个,但结果可以通过组收集到一个较小的集合中。
-
无论如何,此类问题的唯一真正解决方案涉及构建索引,但如果该过程本身当然会很耗时。理想情况下,它会提前在服务器上完成;事实上,在这种情况下,将表保存在真正的 RDBMS 中并通过 AJAX 进行搜索可能最终会更快。尤其是移动设备在完成所有这些工作时会非常缓慢。
标签: javascript jquery json search