Necesito filtrar el resultado JSON usando jQuery grep. Mi resultado JSON se ve así:

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

Filtre este JSON con la matriz del ejemplo de Nombre:

var Name= ["Name 1","Name 2"];
2
Dil85 9 may. 2016 a las 09:13

3 respuestas

La mejor respuesta

Utilice jQuery.grep() para filtrar la matriz de elementos

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>

O con 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>
5
Pranav C Balan 9 may. 2016 a las 14:55

Si necesita obtener la matriz de cadenas de la matriz de objetos existente usando $ .grep, primero use $ .grep para filtrar el objeto y luego use $ .map para obtener la salida específica del objeto de resultado, como el siguiente código le ayudará.

Filtrar el objeto usando $ .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';
});

Ahora que tiene el objeto de resultado en la variable objret, ahora convierta el resultado del objeto a su matriz de cadenas usando $ .map como: -

Get OutPut

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

Así que en la matriz tiene su salida requerida.

1
Pragnesh Khalas 9 may. 2016 a las 06:31

Creo que es la misma pregunta expuesta aquí: [pregunta] Filtrando una matriz json usando jquery grep

Sin embargo, la matriz json es como una cadena, o obtienes una matriz de eso o solo puedes acceder a ella como una cadena. Use jquery grep para recrear la matriz y luego acceda a ella a través del índice para comparar el valor

0
Community 23 may. 2017 a las 11:59