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

How do I create a search which looks for matching data in an array?

本文关键字:查找 数据 搜索 数组 何创建 创建      更新时间:2023-09-26

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

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

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");
        }           
    }
})
首先

,你的对象不是一个数组。这种情况可能很简单:

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 方法将返回值对象或 null。

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

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");
    }
}