使用jquery grep过滤带有数组值的json对象

时间:2016-05-09 06:13:14

标签: javascript jquery json

我需要使用jQuery grep来过滤JSON结果。我的JSON结果如下所示:

 var data = { "items":[
  {
      "Name":           "Name 1",
      "City":      "city1"
  },
  {         
      "Name":           "Name 2",
      "City":      "city2"
  },
  {
      "Name":       "Name 3",
      "City":      "cat1"
  }
]}

使用Name示例数组过滤此JSON:

var Name= ["Name 1","Name 2"];

3 个答案:

答案 0 :(得分:5)

使用 http://manenko.com/2014/12/16/how-to-create-an-input-form-using-uitableview.html 过滤项目数组

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
var data = {
  "items": [{
    "Name": "Name 1",
    "City": "city1"
  }, {
    "Name": "Name 2",
    "City": "city2"
  }, {
    "Name": "Name 3",
    "City": "cat1"
  }]
}
var name = ["Name 1", "Name 2"];

var res = data.items.filter(function(v) {
  return name.indexOf(v.Name) > -1;
});

document.write('<pre>' + JSON.stringify(res, 0, 3) + '</pre>');

jQuery.grep()

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
sysclk_enable_module(SYSCLK_PORT_F, PR_USART0_bm);

答案 1 :(得分:0)

我认为这里有同样的问题: [问题] Filtering a json array using jquery grep

但是json数组就像字符串一样,或者你从中得到一个数组,或者你只能像字符串一样访问它。 使用jquery grep重新创建数组,然后通过索引访问它以比较值

答案 2 :(得分:0)

如果你需要使用$ .grep从现有的对象数组中获取字符串数组,那么首先使用$ .grep来过滤对象然后使用$ .map来获取结果对象的特定输出,如下面的代码将帮助你。

使用$ .grep

过滤对象
var data = {
    "items": [
  {
      "Name": "Name 1",
      "City": "city1"
  },
  {
      "Name": "Name 2",
      "City": "city2"
  },
  {
      "Name": "Name 3",
      "City": "cat1"
  }
    ]
};

var objret = $.grep(data.items, function (n, i) {
    return n.Name == 'Name 1' || n.Name == 'Name 2';
});

现在你在objret变量中有结果对象现在将对象结果转换为使用$ .map的字符串数组输出: -

获取OutPut

var array = $.map(objret, function (value, index) {
    return [value.Name];
});

所以在数组中有你需要的输出。