Foros del Web » Programando para Internet » Javascript »

compareToIgnoreCase

Estas en el tema de compareToIgnoreCase en el foro de Javascript en Foros del Web. Hola, tengo una función en javascript en la que quiero comparar dos string, o más exactamente dos elementos de dos arrays diferentes, pero me dá ...
  #1 (permalink)  
Antiguo 17/02/2010, 04:31
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 3 meses
Puntos: 1
compareToIgnoreCase

Hola, tengo una función en javascript en la que quiero comparar dos string, o más exactamente dos elementos de dos arrays diferentes, pero me dá error tanto en ie7 como en mozilla, y no entiendo porqué. Estoy utilizando la propiedad "compareToIgnoreCase" porque quiero que no me discrimine entre mayúsculas y minúsculas, ¿podéis decirme dónde está el fallo? He aquí la parte del código:

Código:
for (i=0; i<modeloDetalle.tareas.length; i++)
		{
			nombreTareaElegida.innerHTML = '<span>' + modeloDetalle.tareas[i].nombreTarea + '</span>';
			var tareaElegida = document.getElementById('nombreTareaElegida').innerText;
			vaciarContenidoDetalleActividad(nombreTareaElegida);
			
			if (nombreTareaSeleccionada == tareaElegida)
			{	
				nombreTareaElegida.innerHTML = '<span>' + modeloDetalle.tareas[i].nombreTarea + '</span>';
				descripcionTareaElegida.innerHTML = '<span>' + modeloDetalle.tareas[i].descripcionTarea + '</span>';

				var elem = 0;
				var numLista = 0;
				var listaElementosEnMayuscula = new Array();
				var listaElementosModeloOrdenada = new Array();
				for (elem=0; elem < modeloDetalle.tareas[i].tiposElemento.length; elem++)
				{
					listaElementosEnMayuscula[elem] = modeloDetalle.tareas[i].tiposElemento[elem].toUpperCase();
				}
				listaElementosEnMayuscula = listaElementosEnMayuscula.sort();
				for (numLista=0; numLista < listaElementosEnMayuscula.length; numLista++)
				{
					for (elem=0; elem < modeloDetalle.tareas[i].tiposElemento.length; elem++)
					{
						if (listaElementosEnMayuscula[numLista].compareToIgnoreCase(modeloDetalle.tareas[i].tiposElemento[elem]) == 0 )
						{
							listaElementosModeloOrdenada[numLista] = modeloDetalle.tareas[i].tiposElemento[elem];
						}
					}
				}

				var listaElementos = "";
				for (elem=0; elem < listaElementosModeloOrdenada.length; elem++)
				{
					listaElementos = listaElementos + listaElementosModeloOrdenada[elem];
					if (elem != listaElementosModeloOrdenada.length -1)
					{
						listaElementos = listaElementos + ' - ';
					}
				}
				listadoTiposElementos.innerHTML = listaElementos;
El error está en la línea "if (listaElementosEnMayuscula[numLista].compareToIgnoreCase(modeloDetalle.tareas[i].tiposElemento[elem]) == 0 )"

Muchas gracias, un saludo
  #2 (permalink)  
Antiguo 17/02/2010, 05:18
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 21 años, 11 meses
Puntos: 1284
Respuesta: compareToIgnoreCase

Hola:

No me suena ese método en javascript... y en google, solo veo entradas referenciando "java"... no te habrás confundido de lenguaje...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 17/02/2010, 07:21
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: compareToIgnoreCase

Pues igual era ese el problema, que no se puede en javascript. Lo intentaré en el action, muchas gracias, y un saludo
  #4 (permalink)  
Antiguo 18/02/2010, 07:53
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: compareToIgnoreCase

Hombre, defínela si la necesitas:

Código Javascript:
Ver original
  1. if (typeof window.compareToIgnoreCase != 'function') {
  2.     window.compareToIgnoreCase = function(cadena1, cadena2) {
  3.         return cadena1.toLowerCase() === cadena2.toLowerCase();
  4.     }
  5. }

No digo que sea la implementación más eficiente, pero es un ejemplo.


Saludos.
  #5 (permalink)  
Antiguo 18/02/2010, 08:03
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: compareToIgnoreCase

Al final lo he implementado en el Action, con un treeSet:

Collection<DefinicionDeTareaVo> listadoTareas = new TreeSet<DefinicionDeTareaVo>(new Comparator<DefinicionDeTareaVo>(){
public int compare (DefinicionDeTareaVo arg0, DefinicionDeTareaVo arg1) {
//para ordenar por nombre ignorando diferencias por mayúsculas o minúsculas
if(arg0.getNombre().compareToIgnoreCase(arg1.getNo mbre()) == 0)
{
return -1;
}
else {
return arg0.getNombre().compareToIgnoreCase(arg1.getNombr e());
}
}
});

Así obtengo el orden que quería. Muchas gracias

Un saludo

Etiquetas: Ninguno
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 08:21.