Foros del Web » Programando para Internet » Javascript »

ordernar array, crear elementos DOM ordernadamente

Estas en el tema de ordernar array, crear elementos DOM ordernadamente en el foro de Javascript en Foros del Web. Hola que tal chicos como estan :) pues les tengo un problema que me aqueja desde ayer y es que tengo un array que dentro ...
  #1 (permalink)  
Antiguo 07/05/2014, 16:40
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
ordernar array, crear elementos DOM ordernadamente

Hola que tal chicos como estan :) pues les tengo un problema que me aqueja desde ayer y es que tengo un array que dentro tiene cadenas con texto del tipo html y pues esto se llena en el backend con node.js pero entonces debido a que node es async pues la funfion que crea ese array, despues de hacer unos cambios ya ella no me llena ordenadamente el array (unas cosas se demoran mas que otras), entonces tengo el array en desoder.

Que me aconsejarian para ordenarlo:
Este seria un ejemplo del array:
Código Javascript:
Ver original
  1. var frase=[ '1_ dgdsh dsgrth &V568735 ja ja aj @FeCaCe ',
  2.   '2_ hola soy @faber',
  3.   '3_ holas que tal esta cancion @SonickSeven &V568758 ',
  4.   '4_ muy buenos dias amigos',
  5.   '5_ segseryg serrgsery seg',
  6.   '6_ hora de comer' ]//los numero no van solo los hice para que vean el order
  7. ;
  8. //cadena en bruto sin procesar ni hacer consultas
  9. //resultado de todo el proceso
  10.  
  11. [ '2_ hola soy <a href="http://www.forosdelweb.com/f13/user/?cod=faber" class="link">@faber</a>',
  12.   '4_ muy buenos dias amigos',
  13.   '5_ segseryg serrgsery seg',
  14.   '6_ hora de comer',
  15.   '1_ dgdsh dsgrth ja ja aj <a href="http://www.forosdelweb.com/f13/user/?cod=FeCaCe" class="link">@FeCaCe</a>  &V568735',
  16.   '3_ holas que tal esta cancion <a href="http://www.forosdelweb.com/f13/user/?cod=SonickSeven" class="link">@SonickSeven</a>  &V568758' ]
si se dan cuenta su orden ha cambiado, pense usar la funcion sort de javascript pero esa funcion sirve cuando tiene algo que la ordene (a mi favor) pero aca no esta. Tambien pense hacer un array multidimencional algo como esto en el array de resultado:
Código Javascript:
Ver original
  1. [ [1 ,'2_ hola soy <a href="http://www.forosdelweb.com/f13/user/?cod=faber" class="link">@faber</a>'], ...
aunque no me gustaria hacerlo pues deforma o alarga las cosas. La verdad no se. Agradeceria mucho chicos :) la ayuda o ideas que me den

Última edición por sonickseven; 07/05/2014 a las 16:54
  #2 (permalink)  
Antiguo 07/05/2014, 23:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ordernar array, crear elementos DOM ordernadamente

Utilizando una función anónima como parámetro de la función sort y haciendo la comparación entre cada dato por el primer dato antes del guión bajo, puedes hacer el ordenamiento.

Código Javascript:
Ver original
  1. var array = ['2_ hola soy <a href="http://www.forosdelweb.com/f13/user/?cod=faber" class="link">@faber</a>',
  2.   '4_ muy buenos dias amigos',
  3.   '5_ segseryg serrgsery seg',
  4.   '6_ hora de comer',
  5.   '1_ dgdsh dsgrth ja ja aj <a href="http://www.forosdelweb.com/f13/user/?cod=FeCaCe" class="link">@FeCaCe</a>  &V568735',
  6.   '3_ holas que tal esta cancion <a href="http://www.forosdelweb.com/f13/user/?cod=SonickSeven" class="link">@SonickSeven</a>  &V568758'];
  7.  
  8. array.sort(function (a, b) {
  9.     return a.substring(0, a.indexOf("_")) - b.substring(0, b.indexOf("_"));
  10. });
  11.  
  12. document.body.innerHTML = array.join("<br />");

En la documentación de la función, hay ejemplos en donde explican cómo hacer el ordenamiento con funciones anónimas. Pensé en comparar a[0] - b[0], pero puede darse el caso de que el número antes del guión bajo sea de más de 1 cifra, en ese caso, no tomaría el número completo, solamente el primer dígito. Con esta forma, toma el número completo.



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

Etiquetas: dom, elementos, funcion, html, js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:23.