Ver Mensaje Individual
  #7 (permalink)  
Antiguo 05/07/2014, 07:14
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Mostrar en un select los elementos de un array sin repetir

El problema está en que por cada opción añades al array entero de deportes cuando lo que debes de hacer es recorrer a dicho array y en cada iteración añadir cada una de sus opciones al <select>.

Código Javascript:
Ver original
  1. var array_unique = function(array){
  2.     var coincidencias = [],
  3.         array_filtrado = [];
  4.         if (!Array.prototype.forEach){
  5.             var total = array.length;
  6.             for (var i = 0; i < total; i++)
  7.                 if (!Array.prototype.indexOf){
  8.                     var repeticiones = false;
  9.                     for (var j = i + 1; j < total; j++)
  10.                         if (array[i][1] == array[j][1]){
  11.                             repeticiones = true;
  12.                             break;
  13.                         }
  14.                     if (repeticiones) array_filtrado.push(array[i]);
  15.                 }
  16.                 else
  17.                     if (array_filtrado.indexOf(array[i][1]) == -1)
  18.                         array_filtrado.push(array[i]);
  19.         }
  20.         else
  21.             array.forEach(function(valor){
  22.                 if (coincidencias.indexOf(valor[1]) == -1){
  23.                     coincidencias.push(valor[1]);
  24.                     array_filtrado.push(valor[1]);
  25.                 }
  26.             });
  27.         return array_filtrado;
  28.     },
  29.     deportes = [
  30.         ['Jose', 'futbol'],
  31.         ['Luis', 'balonmano'],
  32.         ['Antonio', 'baloncesto'],
  33.         ['Mario', 'futbol']
  34.     ];
  35.  
  36. var opciones = array_unique(deportes),
  37.     total = opciones.length,
  38.     lista = document.getElementById("despleDeportes");
  39.  
  40. for (var i = 0; i < total; i++){
  41.     var opcion = document.createElement("option");
  42.     opcion.value = opciones[i];
  43.     opcion.innerHTML = opciones[i];
  44.     lista.appendChild(opcion);
  45. }

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