Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/02/2014, 00:47
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Autocomplete y Json, algunas dudas

Podrías previamente tomar todos los valores contenidos dentro de los objetos del array contenido en el primer atributo del objeto principal y con ayuda de bucles, los vas insertando en un nuevo array.

Código Javascript:
Ver original
  1. var availableTags = {
  2.                       "datos": [
  3.                                  {
  4.                                    "nombre": "Juan",
  5.                                    "edad": "24",
  6.                                    "extra": {
  7.                                      "estatura": "1.97",
  8.                                      "peso": "45"
  9.                                    }
  10.                                  }
  11.                                ]
  12.                     },
  13.     datos = [];
  14.  
  15. for (var i in availableTags.datos){
  16.   for (var j in availableTags.datos[i]){
  17.     if (typeof availableTags.datos[i][j] === "object")
  18.       for (var k in availableTags.datos[i][j]){
  19.         datos.push(availableTags.datos[i][j][k]);
  20.       }
  21.     else
  22.       datos.push(availableTags.datos[i][j]);
  23.   }
  24. }
  25.  
  26. $("#search").autocomplete({
  27.   source: datos
  28. });

En el objeto principal "availableTags", hay un único atributo de nombre "datos", que tiene como valor a un array que contiene un objeto, en dicho objeto, hay 3 atributos, los dos primeros contienen 2 cadenas, mientras que el tercero contiene un objeto con dos atributos con cadenas como valores, por último, declaro un nuevo array.

Con un primer bucle, recorro el array del único atributo del objeto "availableTags", enseguida, recorro dicho array con otro bucle y en cada iteración verifico si el valor de cada atributo es un objeto, de ser así, lo recorro con un tercer bucle y añado cada uno de sus valores al nuevo array, caso contrario, añado los valores del objeto en cuestión al array. Finalmente, designo dicho array (el nuevo) como la fuente de donde se alimentará el autocompletado.

El resultado es este: http://jsbin.com/bekig/1

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand