引信js查找带有关键字的名称

时间:2018-09-06 03:59:58

标签: javascript jquery json xml fuzzy-search

我一直在尝试从JSON URL中提取一些数据。

我已经可以使用以下代码做到这一点:

function getObjects(obj, key, val) {
    var objects = [];
    for (var i in obj) {
        if (!obj.hasOwnProperty(i)) continue;
        if (typeof obj[i] == 'object') {
            objects = objects.concat(getObjects(obj[i], key, val));    
        } else 
        //if key matches and value matches or if key matches and 
value is not passed (eliminating the case where key matches but passed value does not)
        if (i == key && obj[i] == val || i == key && val == '') { //
            objects.push(obj);
        } else if (obj[i] == val && key == ''){
            //only add if the object is not already in the array
            if (objects.lastIndexOf(obj) == -1){
                objects.push(obj);
            }
        }
    }
    return objects;
}

..

var xhr = new XMLHttpRequest();
xhr.open("GET", json_url, true);
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
    // JSON.parse does not evaluate the attacker's scripts.
    var resp = JSON.parse(xhr.responseText);
    var item = "Entire Item Name";
    var name = (getObjects(resp, '', item));

这将返回项目的数组,但是项目名称必须精确到首字母大写。

我尝试添加名为fuze.js的关键字查找器

http://fusejs.io/

我尝试过通过以下方式将其添加到脚本中:

var options = {
    shouldSort: true,
    //tokenize: true,
    threshold: 0.6,
    location: 0,
    distance: 100,
    maxPatternLength: 32,
    minMatchCharLength: 1,
    keys: ['name'],
    id: 'name'       
};

    var fuse = new Fuse(resp, options); 
    var result = fuse.search("a");
    console.log(result);

    }
}
xhr.send();

引信js内容位于var名称下的if语句中。

您可以看到我尝试仅放置一个简单的“ a”以查看它是否实际上返回了一些数据。而且我已经尝试了很多选项,到目前为止,无论我尝试什么,它都不会返回任何结果。

有任何想法为什么不起作用?

0 个答案:

没有答案