2011-11-09 13 views
5

Tengo una función que busca a través de una matriz de cadenas. Funciona perfectamente, excepto por el hecho de que es sensible a mayúsculas y minúsculas. Necesito que sea insensible a las mayúsculas y minúsculas.Dificultad para convertir una matriz de cadenas en LowCase y agregar a mi función. Javascript

La manera más fácil sería hacer que la función convierta la matriz a minúsculas, por lo que cuando la función realiza una búsqueda a través de la matriz, puede encontrarla, independientemente de su caso.

He intentado agregar var array_name_tolowercase = array_name.toLowerCase(); dentro de mi función para que cuando se llame a la función, pueda funcionar en todas las matrices; si es necesario.

Lo siento, no me he aclarado en absoluto, si este es el caso, por favor hágamelo saber y haré mi mejor esfuerzo para volver a explicar. ¡Gracias por adelantado!

+0

Muéstranos el código de tu función para que podamos aconsejarte cómo hacerlo insensible a mayúsculas y minúsculas. – jfriend00

+0

Gracias chicos, lo ordenaron! ¡Gracias! –

Respuesta

4

Usted tendrá que convertir los elementos de la matriz a minúsculas, no el propio objeto Array. No sé exactamente lo que sucede dentro de su función, pero algo como esto:

for(var i = 0; i < arrayName.length; i++) { 
    if(arrayName[i].toLowerCase() === "whatever") { 
     //Found a match! 
    } 
} 

mensaje un poco más de su código y será más fácil para proporcionar una solución más precisa! Aquí hay un example de los de arriba.

+0

Hola, lo siento por ser tan vago. He publicado un código arriba. Gracias –

+0

Su código parece funcionar para mí: http://jsfiddle.net/interdream/BCqsb/1/ –

+0

Me las arreglé para resolverlo. Gracias –

2

no se puede llamar toLowerCase el objeto de matriz que necesitamos invocar el miembro individual de la matriz

6

No puede usar toLowerCase() en una matriz, a menos que la extienda.

Ponga esto en alguna parte en el código, a continuación, de aquí en adelante, se puede utilizar en matrices (nota, sólo si la matriz está llena de cuerdas)

Array.prototype.toLowerCase = function() { 
    for (var i = 0; i < this.length; i++) { 
     this[i] = this[i].toString().toLowerCase(); 
    } 
} 
3

matrices no tienen un método toLowerCase. Puede crear uno o simplemente llamar a LowCase en cada cadena al iterar a través de la matriz.

Array.prototype.toLowerCase = function() { 
    var i = this.length; 
    while (--i >= 0) { 
     if (typeof this[i] === "string") { 
      this[i] = this[i].toLowerCase(); 
     } 
    } 
    return this; 
}; 

Para el código que envió, puede cambiar var a = (array[i].indexOf(searchlow)); a

var a = (array[i].toLowerCase().indexOf(searchlow)); 
20

La manera más fácil es unirse a la matriz de mayúsculas y minúsculas en una cadena, en minúsculas, y luego dividir la cadena de nuevo en una matriz .

Ejemplos:

var tmp = mcArray.join('~').toLowerCase() 
var lcArray = tmp.split('~') 
+0

¿Qué sucede si alguno de los elementos de la matriz contiene '~'? – Greg

+1

Bastante tonto ... obviamente eso arruinaría la lógica. Esto supone que "~" es un carácter seguro.Puedes usar cualquier otro personaje. – LukeS

2

Personalmente, me resulta mucho más fácil de hacerlo de esta manera:

   array = ["Apples","Oranges","FRUIT"]; 
       console.log("array: "+array); //array: Apples,Oranges,FRUIT 
       arrayString = array.toString(); 
       arrayLowerString = arrayString.toLowerCase(); 
       arrayLower = arrayLowerString.split(","); 
       console.log("arrayLower: "+arrayLower); //apples,oranges,fruit 
+0

Esto funciona, ¿o tal vez simplemente podría concatenar los tres métodos en uno solo? 'var arrayLowerString = array.toString(). ToLowerCase(). Split (',')' –

0
function(resp) { 
    return this.colors.filter(function(color) { 
     return color.toLowerCase() === resp.toLowerCase(); 
    })[0]; 
} 
0

array_name_tolowercase = array_name.map (x => x.toLowerCase)

Cuestiones relacionadas