如何创建在数组中查找匹配数据的搜索?

时间:2012-06-26 11:16:47

标签: javascript jquery json twitter-bootstrap

我想创建一个搜索框,用于检查输入并查看它是否与城镇名称匹配。

我的数据是这样组织的(虚构数据顺便说一句):

var markers = {
    towns: {
        "London": {lat: -83.68088192646843, lng: -125.270751953125},
        "Paris": {lat: -58.1548020417031, lng: -21.318115234375},
    }
}

所以澄清一下:

  • 选择文本框输入var query
  • 搜索城镇,var results
  • if (query === results)做一些事情,例如发出警报

感谢。

编辑:

我能够按如下方式进行测试:

$("#search").blur(function() {
    var query = $("#search").val();
    var results = "hi";
    if (query === results) {
        alert("booyah");
    }   
})

这是有效的,但是你可以看到我不知道如何在var results存储城镇。

编辑#2:这会有用吗?

$("#search").blur(function() {
    var query = $("#search").val();
    for (var town in markers.towns) {
        if (query !== markers.towns[town]) {
            alert("booyah");
        }           
    }
})

2 个答案:

答案 0 :(得分:0)

首先,您的对象不是数组。 这种情况可能很简单:

var coordinates = (function () {
    var markers = {
        towns: {
            "London": {lat: -83.68088192646843, lng: -125.270751953125},
            "Paris": {lat: -58.1548020417031, lng: -21.318115234375},
        }
    };
    return {
        find = function (city) {
             markers.towns[city] || null;
        }
    };
})();

find方法将返回您的value对象或null。

答案 1 :(得分:0)

当我运行以下命令时,使用硬编码的查询变量,它可以正常工作:

var markers = {
    towns: {
        "London": {lat: -83.68088192646843, lng: -125.270751953125},
        "Paris": {lat: -58.1548020417031, lng: -21.318115234375}
    }
}

var query = "london";   // Test with different capitalization.
for (var town in markers.towns) {
    // If the current town name matches the input field (case insensitive)
    if (town.toLowerCase() === query.toLowerCase()) {
        alert("booyah");
    }
}