Foros del Web » Programando para Internet » Jquery »

Ordenar arreglo de json

Estas en el tema de Ordenar arreglo de json en el foro de Jquery en Foros del Web. Hola que tal tengo un arreglo en json y quiero mostrarlo en un tabla pero al seleccionar un select me lo ordene alfabéticamente. Aquí el ...
  #1 (permalink)  
Antiguo 14/08/2015, 13:54
 
Fecha de Ingreso: julio-2007
Mensajes: 4
Antigüedad: 17 años, 4 meses
Puntos: 0
Ordenar arreglo de json

Hola que tal tengo un arreglo en json y quiero mostrarlo en un tabla pero al seleccionar un select me lo ordene alfabéticamente.

Aquí el codigo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">




</script>
</head>

<body>
<select id="ordena">
<option value="0">Seleccione</option>
<option value="1">Ordenar por nombre</option>
<option value="2">Ordenar por edad</option>
</select>

<script type="text/jscript" language="javascript">


$('#ordena').change(function() {
alert ('hola');
var seleccion=$('#ordena').val();
alert (seleccion);
var persona= [{"nombre": "Miguel Angel Reyna", "edad" : 26, "sexo" : "Masculino" },
{"nombre": "Karina Gonzalez", "edad": 22, "sexo": "Femenino"},
{"nombre": "Jimena Navarrete", "edad": 27, "sexo": "Femenino"},
{"nombre": "Uribe Peralta", "edad": 29, "sexo": "Masculino"},
{"nombre": "Jesús Corona", "edad": 38, "sexo": "Masculino"},
{"nombre": "Raúl Aloson Jimenez", "edad": 24, "sexo": "Masculino"},
{"nombre": "Rocio Duarte", "edad": 27, "sexo": "Femenino"}];

var datos = eval(persona);
//console.log(datos.personas);
alert (datos.nombre);

var datos=persona.sort(function (a,b) {
var A = $(a).text().toUpperCase();
var B = $(b).text().toUpperCase();
return ($(b).text()) > ($(a).text()) ? 1 : -1;



})
var tabla = '<table cellpadding="0" cellspacing="0" border="1" class="display" id="lista_paciente">';
tabla += '<caption>Mi Tabla</caption>';
tabla += '<thead>';
tabla += '<tr>';
tabla += '<th>Nombre</th><th>Edad</th><th>Sexo</th>';
tabla += '</tr>';
tabla += '</thead>';
tabla += '<tbody>';
tr = '';

for (i=0; i<datos.length; i++ )
{
//alert (datos[i].nombre);
tr += '<tr>';
tr += '<td>'+datos[i].nombre+'</td><td>'+datos[i].edad+'</td><td>'+datos[i].sexo+'</td>';
tr += '</tr>';
}

tabla += tr;
tabla += '</tbody></table>';
$('#lista').html( tabla );



});
</script>
<div id="lista"></div>
</body>
</html>
  #2 (permalink)  
Antiguo 14/08/2015, 15:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Ordenar arreglo de json

Lo estás haciendo mal. Los atributos de un objeto no pueden ser tratados como elementos del DOM.

El ordenamiento debe de ser así:

Código Javascript:
Ver original
  1. persona.sort(function(a, b){
  2.     return a.nombre > b.nombre ? 1 : b.nombre > a.nombre ? -1 : 0;
  3. });

Siempre revisa la documentación existente.

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
  #3 (permalink)  
Antiguo 17/08/2015, 11:13
 
Fecha de Ingreso: julio-2007
Mensajes: 4
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Ordenar arreglo de json

El problema es que no entra esta funcion del sort,
  #4 (permalink)  
Antiguo 18/08/2015, 10:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Ordenar arreglo de json

¿A qué te refieres con que "no entra esta función del sort"?
__________________
«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: arreglo, json
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 13:33.