Pruebe jOrder. http://github.com/danstocker/jorder
Está optimizado para una rápida búsqueda de O (logn) y clasificación en tablas grandes (miles de filas) en JS.
A diferencia de la iteración de matriz, en la que se basan la mayoría de las respuestas, jOrder usa índices para filtrar datos. Solo para darle una idea, la búsqueda de texto libre en una tabla de 1000 filas completa aproximadamente 100 veces más rápido que la iteración. Cuanto más grande es la mesa, mejor es la proporción que obtienes.
Sin embargo, jOrder no puede procesar el formato de los datos de muestra. Pero si vuelve a formato de esta manera:
var teams =
[
{ sport : "soccer", team: "FC Barcelona" },
{ sport : "soccer", team: "Liverpool FC" },
{ sport : "basketball", team : "Dallas Mavericks"}
]
, usted puede obtener los resultados deseados por primera creación de una mesa jOrder:
var table = jOrder(teams)
.index('teams', ['team'], { grouped: true, ordered: true, type: jOrder.text });
Y a continuación, ejecutar una búsqueda en él:
var hits = table.where([{ team: 'FC' }], { mode: jOrder.startof });
Y obtendrá exactamente las dos filas que necesitaba. Eso es.
Lo es un objeto JSON? ¿Quiere decir que tiene una cadena JSON *? –
Él tiene un objeto de JavaScript, por supuesto. Supongo que dijo que es JSON porque le pidió a un servidor que lo haga como JSON o JSONP. :-) – Nosredna