18 votos

Búsqueda JSON array para la coincidencia de atributo

Tengo un array de JSON, necesito devolver un nombre del restaurante, pero yo solo conozco el valor de su "comida" atributo (no es el número de índice).

Por ejemplo, ¿cómo podría yo volver "KFC" si yo sólo sabía que "el pollo"?

restaurants = 
  [
    {"restaurant" : { "name" : "McDonald's", "food" : "burger" }},
    {"restaurant" : { "name" : "KFC",        "food" : "chicken" }},
    {"restaurant" : { "name" : "Pizza Hut",  "food" : "pizza" }}
  ];

24voto

Matthew Flaschen Puntos 131723
for(var i = 0; i < restaurants.length; i++)
{
  if(restaurants[i].restaurant.food == 'chicken')
  {
    return restaurants[i].restaurant.name;
  }
}

7voto

He Nrik Puntos 688

En este caso me gustaría utilizar el ECMAscript 5 Matriz.el filtro. La siguiente solución requiere de la matriz.filter() que no existe en todas las versiones de IE.

Las cuñas se pueden encontrar aquí: MDN Matriz.filtro o ES5-shim

var result = restaurants.filter(function (chain) {
    return chain.restaurant.food === "chicken";
})[0].restaurant.name;

2voto

Steve Puntos 10623
for(x in restaurants) {
  if(restaurants[x].restaurant.food=='chicken') {
    return restaurants[x].restaurant.name;
  }
}

1voto

laVie Puntos 34

Deben ser demasiado tarde ahora, pero la versión correcta sería:

for(var i = 0; i < restaurants.restaurant.length; i++)
{
  if(restaurants.restaurant[i].food == 'chicken')
  {
    return restaurants.restaurant[i].name;
  }
}

0voto

KhanSharp Puntos 1754

usted puede utilizar ES5 algunos. Su bonita primer lugar mediante el uso de devolución de llamada

function findRestaurent(foodType) {
    var restaurant;
    restaurants.some(function (r) {
        if (r.food === id) {
            restaurant = r;
            return true;
        }
   });
  return restaurant;
}

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: