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

Filtering a json object with array of values using jquery grep

本文关键字:数组 json 对象 jquery grep 过滤 使用      更新时间:2023-09-26

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

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

使用名称数组过滤此JSON示例:

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

使用jQuery.grep()过滤项目数组

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 = $.grep(data.items, function(v) {
  return name.indexOf(v.Name) > -1;
});
document.write('<pre>' + JSON.stringify(res, 0, 3) + '</pre>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


或者使用filter()

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>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

如果您需要使用$.grep从现有对象数组中获取字符串数组,请首先使用$.grp过滤对象,然后使用$.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变量中有了result对象,现在使用$.map将对象结果转换为字符串数组输出,如:-

获取输出

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

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

我认为这也是这里暴露的问题:[question]使用jquery grep 过滤json数组

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