Si su pregunta es, ¿hay alguna cosa incorporada que haga la búsqueda por usted, entonces no, no hay. Básicamente recorre la matriz usando String#indexOf
o regular expression para probar las cadenas.
Para el bucle, que tienen al menos tres opciones:
Un viejo aburrido for
bucle.
En entornos habilitados para ES5 (o con una cuña), Array#filter
.
Porque está utilizando jQuery, jQuery.map
.
viejo aburrido ejemplo for
bucle:
function search(source, name) {
var results = [];
var index;
var entry;
name = name.toUpperCase();
for (index = 0; index < source.length; ++index) {
entry = source[index];
if (entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1) {
results.push(entry);
}
}
return results;
}
Donde que se dice que con obj.list
como source
y el fragmento deseado como nombre name
.
O si hay alguna posibilidad de que hay entradas en blanco o entradas sin nombres, cambiar el if
a:
if (entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1) {
Array#filter
ejemplo:
function search(source, name) {
var results;
name = name.toUpperCase();
results = source.filter(function(entry) {
return entry.name.toUpperCase().indexOf(name) !== -1;
});
return results;
}
Y de nuevo, si alguna posibilidad de que no están en blanco entradas (por ejemplo, undefined
, en oposición a la falta; filter
omitirán entradas faltantes), cambie el retorno interno a:
return entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1;
jQuery.map
ejemplo (aquí Asumo jQuery
= $
como suele ser el caso; $
cambiar a jQuery
si está usando noConflict
):
function search(source, name) {
var results;
name = name.toUpperCase();
results = $.map(source, function(entry) {
var match = entry.name.toUpperCase().indexOf(name) !== -1;
return match ? entry : null;
});
return results;
}
(Y de nuevo, añadir entry && entry.name &&
allí si es necesario.)
lo has necesitado hasta ahora con la búsqueda? te ayudamos con el código, no te proporcionamos uno. – Joseph
SO es para hacer * preguntas *. ¿Cuál es tu pregunta? –
posible duplicado de [use jQuery's find() en el objeto JSON] (http://stackoverflow.com/questions/4992383/use-jquerys-find-on-json-object) y [JSON encuentra en JavaScript] (http://stackoverflow.com/q/1946165/575527) – Joseph