如何使用jQuery过滤对象数组

时间:2014-07-26 15:46:20

标签: javascript jquery json

最近我正在学习jQuery。我希望当我在这里写的时候 <input type="text" id="scrivo" /> 我想过滤从json文件派生的数组。 json文件是这样的:

{
  "Re": 
[
  {
    "nm": "Edward the Elder",
    "cty": "GB",
    "hse": "House of Wessex",
    "yrs": "899-925"
  },
  {
    "nm": "Edgar",
    "cty": "GB",
    "hse": "House of Wessex",
    "yrs": "959-975"
  },
  {
    "nm": "Edward the Martyr",
    "cty": "GB",
    "hse": "House of Wessex",
    "yrs": "975-978"
  }
 ]
}

并且代码是:

<script language="JavaScript">
$(document).ready(function()             
    {
      $('#scrivo').keyup(function()
        {
         var json = (function () {
         var json = null;
         $.ajax({
             'async': false,
             'global': false,
             'url': "re.json",
             'dataType': "json",
             'success': function (data) {
                 json = data;
             }
               });
             return json.Re;
         })();
         var o = $.grep(json, function (n) { return (n.nm.indexOf("El")) },true);
      });
 });
</script>

例如,我想过滤包含&#34; El&#34;的对象,这是json文件中的第一个对象。相反,我没有收到任何东西。 你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

我发现了这个错误:您已经反转了grep命令。这是一个jsFiddle,展示了我的答案:http://jsfiddle.net/UqE5n/3/

关键路线在这里:

var value = $('#scrivo').val();
var o = $.grep(jsonRe, function (n) {
    return n.nm.indexOf(value) >= 0;
}, false);                                <--- "true" will invert the result!

它还将指导您如何使用jsFiddle进行代码示例询问。我自己正在学习jsQuery,谢谢你提出这个问题!