Comment filtrer un tableau d'objets basée sur les attributs?

J'ai le code JavaScript suivant tableau de l'immobilier objets à la maison:

var json = {
    'homes': [{
            "home_id": "1",
            "price": "925",
            "sqft": "1100",
            "num_of_beds": "2",
            "num_of_baths": "2.0",
        }, {
            "home_id": "2",
            "price": "1425",
            "sqft": "1900",
            "num_of_beds": "4",
            "num_of_baths": "2.5",
        },
        //... (more homes) ...     
    ]
}

var xmlhttp = eval('(' + json + ')');
homes = xmlhttp.homes;

Ce que je voudrais faire est d'être en mesure d'effectuer un filtre sur l'objet à retourner un sous-ensemble de la "maison" des objets.

Par exemple, je veux être en mesure de filtre basé sur: price, sqft, num_of_beds, et num_of_baths.

Comment puis-je faire quelque chose en JavaScript, comme le pseudo-code ci-dessous:

var newArray = homes.filter(
    price <= 1000 & 
    sqft >= 500 & 
    num_of_beds >=2 & 
    num_of_baths >= 2.5 );

Note, la syntaxe n'a pas à être exactement comme ci-dessus. C'est juste un exemple.

  • Cela semble presque identique à stackoverflow.com/questions/1694717/...
  • var json = { ... } JSON est un texte de notation pour l'échange de données. (ici.) Si vous avez affaire à code source JavaScript, et de ne pas traiter avec une chaîne, vous n'êtes pas affaire avec JSON.
  • Ne pas utiliser la fonction eval. C'est généralement une mauvaise pratique et peut causer des problèmes de performance. Nous avons juste eu à se débarrasser d'un tas de personnes sur un projet parce que le processeur est enfermer.
InformationsquelleAutor JGreig | 2010-04-27