簡體   English   中英

在客戶端搜索對象?

[英]Searching through objects, client-side?

我在內存客戶端有50-100個對象。 我需要搜索沒有標簽的文本,而只是搜索對象的每個字段並查找匹配項或部分匹配項的文本。

進行此類搜索的最佳方法是什么,如何根據相關性列出它們?

內容:

如果要在元素內查找文本,請嘗試以下操作:

$(":contains('your text')");

這將返回包含your text每個元素。

對象

觀看此演示: http : //jsfiddle.net/datyn/1/

還搜索子對象,當前搜索不.toLowerCase()大小寫,如果要更改它,只需刪除.toLowerCase()函數:

var ob = {
    User : {
        name : "Niels",
        country : "Netherlands"
    },
    Name : "Niels test X"
}

function find_match(search, results)
{
    $.each(this, function(k, v){
       if( typeof(v) == "object" )
       {
            find_match.call(v, search, results);  
       }
        else
        {
             if( v.toLowerCase().indexOf(search.toLowerCase()) != -1)
             {
                 if($.inArray(this, results) == -1)
                 {
                     results.push(this);
                 }   
             }
        }
    });
}

var results = [];
find_match.call(ob, "x", results);
alert("Search for x results: " + results.length);
var results = [];
find_match.call(ob, "n", results);
alert("Search for n results: " + results.length);

您可以使用.call方法來調用該函數。

范例:

find_match.call("Object / array you want to search", "The string", "Array where the results will be stored")

變化:

  1. 如果您不想匹配字符串的一部分,請更改: v.toLowerCase().indexOf(search.toLowerCase()) != -1v.toLowerCase() == search.toLowerCase()

您可能要看一下:

http://goessner.net/articles/JsonPath/

對於集合中的每個對象(假設它們有50-100個,或者它們都保存在數組中,或者是jQuery選擇的結果),請使用Object.keys來獲取屬性名稱,然后獲取關聯的值並執行匹配。

由於您的匹配項返回相關性得分,因此您可以將所有匹配項放入成對的數組(匹配項x得分),並使用比較器集對數組進行排序以按得分進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM