【问题标题】:Search an array, display results by relevance to query搜索数组,按与查询的相关性显示结果
【发布时间】:2013-10-24 15:31:19
【问题描述】:

我想在 javascript 数组中执行搜索,显示与查询相关的所有结果,相当于以下 SQL 语句:

"SELECT * FROM table WHERE column LIKE input"

这是一个例子:

var array = [];
array[0] = "Apple";
array[1] = "Apricot";
array[2] = "Pear";
array[3] = "Peacock";

假设我的查询字符串是“ap”,它将按以下顺序返回结果:

1. "Apple"
2. "Apricot"

query = "p"
result:

1. "Pear"
2. "Peacock"
3. "Apple"
4. "Apricot"

query = "r"
result:

1. "Apricot"
2. "Pear"

这在 javascript 中可行吗?怎么样?

【问题讨论】:

  • 我想你必须写下你自己的函数才能做到这一点。你有没有尝试过?
  • taffydb 允许您使用查询对象而不是函数来过滤数据。
  • @dandavis taffy 看起来很棒,谢谢提及!

标签: javascript arrays search


【解决方案1】:

试试这个,

    var arr = [];
    arr[0] = "Apple";
    arr[1] = "Apricot";
    arr[2] = "Pear";
    arr[3] = "Peacock";

    var resultArr=[];
    var str='ap'//string to search

    for(var i=0;i<arr.length;i++){
      if(arr[i].indexOf(str) != -1){
         resultArr.push(arr[i]);
      }
    }

  alert('search results:'+resultArr);
    //resultArr contains reults 

【讨论】:

  • 效果很好,谢谢!知道如何显示最多 10 个结果吗?
  • 如果您只想要最多 10 个搜索结果,请使用脚本 for(var i=0;i=10){ break;// 退出循环 } } }
【解决方案2】:
var array = [];
array[0] = "Apple";
array[1] = "Apricot";
array[2] = "Pear";
array[3] = "Peacock";

function searchArray(query){
    resultArray = [];
    for(var i=0;i<query.length-1;i++){
        var char = query.charAt(i);
        if(array[i].indexOf(char)!=null){
            resultArray.push(array[i]);
        }
    }
    return resultArray;
}

这是未经测试的,就在我的脑海中。但是你应该在 resultArray 中找到你想要的结果

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多