Usando Array#filter
, para este caso particular, el código se vería así
var results = set.filter(function (entry) { return entry.color === "green"; });
Array#filter
no está implementado en algunos navegadores antiguos, por lo que ver el artículo enlazado por una cuña compatibilidad hacia atrás, o mejor aún obtener a full-fledged ES5 shim.
Para el caso más general, es sólo una cuestión de extender esta idea:
function findByMatchingProperties(set, properties) {
return set.filter(function (entry) {
return Object.keys(properties).every(function (key) {
return entry[key] === properties[key];
});
});
}
var results = findByMatchingProperties(set, { color: "green" });
Una vez más, estoy utilizando ECMAScript 5 métodos Object.keys
y Array#every
, a fin de utilizar una cuña ES5. (. El código es factible sin una cuña ES5 pero utiliza bucles manuales y es mucho menos divertido de escribir y leer)
ya ha respondido en http://stackoverflow.com/questions/1820593/search-a-javascript-object –
Ese ejemplo no devuelve el objeto entero , ¿lo hace? – fancy
Esto no tiene nada que ver con jQuery, por lo que debe eliminar esa etiqueta. Es una pregunta puramente JavaScript. – Domenic