javascript - 使用 Javascript 进行高级搜索 - 需要一些建议

标签 javascript search

我一直专注于我需要实现的一些高级搜索功能。我有一个包含电影标题、 Actor 、导演、国家和流派的搜索表单,我需要能够搜索标题和 Actor 、导演、国家和流派等。

我的问题是:如果我事先不知道用户正在搜索哪些数据,我该如何实现这一点?

我在数组中有这种形式的电影对象:

{
    "year": 1957,
    "otitle": "Ni liv",
    "youtube trailer id": "",
    "ntitle": "Ni liv",
    "mod_date": null,
    "length": 91,
    "id": 1080,
    "keywords": null,
    "reg_date": null,
    "description": "Jan Baalsrud er p\u00e5 et sabotasjeoppdrag fra England til Norge med 11 andre vinteren 1943, da fiskeb\u00e5ten deres angripes av en tysk patruljeb\u00e5t. Som eneste overlevende lykkes det Baalsrud \u00e5 unnslippe og en farefull reise mot n\u00f8ytrale Sverige begynner. Etter flere uker i sn\u00f8massene i de steile norske fjellene blir han sn\u00f8blind og m\u00e5 til slutt skj\u00e6re av seg sine frostskadde t\u00e6r for \u00e5 overleve. \n\nDen mest fremtredende norske filmregiss\u00f8r etter 2. verdenskrig, Arne Skouen, har med denne filmen laget et mesterverk, som ble nominert til Oscar for beste utenlandske film i 1957, og siden k\u00e5ret til Norges beste film gjennom tidene. Det vidunderlige norske landskapet danner bakgrunn for den sanne historien om Jan Baalsruds utrolige flukt fra den tyske h\u00e6r. Jack Fjeldstad (Gull Og Gr\u00f8nne Skoger) spiller Baalsrud med imponerende overbevisning, og ble i 1985 sl\u00e5tt til ridder av St. Olavordenen for sitt fremragende arbeid i norsk filmkunst. ",
    "dir": "Arne Skouen",
    "etitle": "Nine Lives",
    "country": "NOR",
    "imdb_id": "",
    "folk": "Jack Fjeldstad, Henny Moan, Alf Malland, Joachim Holst-Jensen, Lydia Op\u00f8ien, Edvard Drabl\u00f8s"
}

查询参数采用这种形式

{
  film_title:"King Kong",
  director:"",
  genre:"action",
  country: "",
  actor: "Jack Black"
 }

我真的需要编写 25 个不同的 if-else block 来检查每种可能的搜索情况吗?这看起来很乏味而且容易出错。

非常感谢任何可以插入我朝着正确方向前进的提示或想法!

最佳答案

您可以使用与数据对象中相同的键进行查询,并通过迭代查询的键来过滤结果,并检查元素是否包含所需的文本。

function getItems(array, search) {
    return array.filter(function (a) {
        return Object.keys(search).every(function (k) {
            return !search[k] || a[k].toLowerCase().indexOf(search[k].toLowerCase()) !== -1;
        });
    });
}

var data = [{ year: 1957, film_title: "King Kong", director: "", genre: "action", country: "", actor: "Jack Black" }, { year: 2000, film_title: "Foo", director: "", genre: "action", country: "", actor: "" }],
    query = { film_title: "King Kong", director: "", genre: "action", country: "", actor: "Jack Black" },
    result = getItems(data, query);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 使用 Javascript 进行高级搜索 - 需要一些建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923734/

相关文章:

search - WIX - 注册表搜索返回错误的安装位置

firefox - 在Firefox中快速进行MSDN搜索

javascript - 使用 AJAX 内部函数绑定(bind)可观察数组

javascript - nvd3 是否有现有方法可以向 nvd3 图表添加滚动条?

javascript - Cytoscape 的自定义节点渲染器 + 限制拖动点

xml - 如何在 Marklogic 中构建一个简单的搜索应用程序?

javascript - jQuery 框 fadeOut/fadeIn 在 mouseleave 后闪烁

javascript - 具有最小副作用的非 Canvas 移动导航

api - 使用正则表达式搜索 Twitter

php - 如何从多维数组中获取值,按名称搜索?