0

我正在使用 JSON 文件来填充一些用于各种转换的下拉菜单。转换器有所增长,我希望可以选择包含搜索栏。

因此,用户可以搜索毫安,而不是导航到“电力”等中的“当前”类别。我只是想让他们更容易一些。

我的 JSON 只有两个字段,下拉列表的名称和值,示例如下。该值是我理解的时尚字符串,因此 Milliampre 是毫安培,其他各种都使用驼峰式大小写。我认为不适合在此字段上运行搜索,因为值可能与名称不同。

此实例中的名称字段是 Milliampere(mA) 所以我需要搜索能够查看字符串的一部分并且不进行完全匹配而忽略大小写,因为搜索字符串可能是毫安或毫安甚至毫安.

从那里下一步是在该页面上填充下拉列表,或者如果有很多选项,则返回可能的选项列表。

这是否可能,如果可以,请您指导我正确的方向吗?

非常感谢!

    "current":[
    {
        "value" : "ampere",
        "name" : "Ampere(A)"
    },
    {
        "value" : "kiloAmpere",
        "name" : "Kiloampere(kA)"
    }]
4

1 回答 1

1

您可以使用这个 JS 库 - DefiantJS (defiantjs.com),它使用新方法扩展全局对象 JSON:“搜索”。使用此方法,您可以使用 XPath 表达式搜索 JSON 结构,如下所示:

var data = {
       "current": [
          { "value": "ampere",      "name": "Ampere(A)" },
          { "value": "kiloAmpere",  "name": "Kiloampere(kA)" },
          { "value": "milliAmpere", "name": "milliAmpere" },
          { "value": "Milliampere", "name": "Milliampere" }
       ]
    },
    res = JSON.search( data, '//name[contains(translate(., "MA", "ma"), "millia")]/..' );

console.log( res[0].name );
console.log( res[1].name );

表达式中的“translate”方法将搜索扩展到包括字母“ma”的大写和小写版本。如果要覆盖所有字母,则将它们全部添加。

这是一个工作小提琴;
http://jsfiddle.net/hbi99/6ssS9/

于 2014-01-07T08:03:34.690 回答