conjunto de objetos de filtro javascript
Tengo una variedad de objetos y me pregunto cuál es la mejor manera de buscarlos. Dado el siguiente ejemplo, ¿cómo puedo buscar name = "Joe"
y age < 30
? ¿Hay algo en lo que jQuery pueda ayudar o tengo que forzar esta búsqueda yo mismo?
var names = new Array();
var object = { name : "Joe", age:20, email: "[email protected]"};
names.push(object);
object = { name : "Mike", age:50, email: "[email protected]"};
names.push(object);
object = { name : "Joe", age:45, email: "[email protected]"};
names.push(object);
Aceptado
Una solución moderna con Array.prototype.filter()
:
const found_names = names.filter(v => v.name === "Joe" && v.age < 30);
O si todavía usas jQuery, puedes usar jQuery.grep()
:
var found_names = $.grep(names, function(v) {
return v.name === "Joe" && v.age < 30;
});
Puedes hacer esto muy fácilmente con el [].filter
método:
var filterednames = names.filter(function(obj) {
return (obj.name === "Joe") && (obj.age < 30);
});
Puedes conocer más al respecto en esta página de MDN .
Puede utilizar la función jQuery.filter() para devolver elementos de un subconjunto de elementos coincidentes.
var names = [
{ name : "Joe", age:20, email: "[email protected]"},
{ name : "Mike", age:50, email: "[email protected]"},
{ name : "Joe", age:45, email: "[email protected]"}
];
var filteredNames = $(names).filter(function( idx ) {
return names[idx].name === "Joe" && names[idx].age < 30;
});
$(filteredNames).each(function(){
$('#output').append(this.name);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"/>
Expandir fragmento