2010-12-10 4 views
17

estoy dividiendo una cadena en una matriz, entonces quiero quitar el espacio en blanco alrededor de cada elemento. Estoy usando jQuery. Soy capaz de hacer esto con éxito con 2 arrays pero yo sé que no es correcto. ¿Cómo realizo un bucle a través de una matriz y recorte cada elemento para que los elementos mantengan ese cambio? Gracias por cualquier consejo. Aquí está mi código de trabajo usando dos arreglos. Por favor muéstrame la forma correcta de hacer esto.jQuery ayuda .Cada, quiero trim() todas las cuerdas en una matriz

var arVeh = vehicleText.split("|"); 
    var cleanArry = new Array(); 
    $.each(arVeh, function (idx, val) { 

     cleanArry.push($.trim(this)); 

    }); 

Cheers, ~ ck en San Diego

+0

¿Quieres hacerlo de manera más eficiente al no declarar la segunda matriz? – kobe

+0

sí, me gustaría usar solo una matriz, arVeh – Hcabnettek

Respuesta

49

Ni siquiera necesita los parámetros idx o val. Esto parece funcionar en jsFiddle:

var cleanVehicles = []; 

$.each(vehicleText.split("|"), function(){ 
    cleanVehicles.push($.trim(this)); 
}); 

EDITAR: Ahora que he visto lo que realmente después, trate de usar el mapa:

var cleanVehicles = $.map(vehicleText.split("|"), $.trim); 
+0

Si te ves un poco más cerca de su pregunta, él dice que ya sabe cómo hacer esto. Él quiere tomar una matriz y simplemente quitar el espacio en blanco sin crear otra matriz. –

+0

Vi eso justo después de publicar, y actualicé mi respuesta para usar el mapa. –

+1

implementación muy limpia Chris D, gracias! – Hcabnettek

0
//a simple function 
function trimArray(dirtyArray){ 
    $.map(dirtyArray.split("|"), function(idx, val){ 
    return $.trim(this); 
    }); 
} 

trimArray(vehicleArray); 

debe hacer el truco

O usted podría utilizar algo de la impresionante potencia de Javascript y el uso de array.prototype. Todavía estoy un poco nuevo en el uso de la .prototype de cualquier objeto ... así que esto no es garantizado para trabajar (pero sin duda se puede hacer).

Array.prototype.trim = function(){ 
    $.map(dirtyArray.split("|"), function(idx, val){ 
    return $.trim(this); 
    }); 
} 

someArray.trim() 
+0

@darek, ¿quiere hacerlo con una sola matriz? – kobe

+0

Sí, quiere una forma de recortar fácilmente los valores de una matriz. –

+0

@darek, no, por favor vea su comentario anterior, su código está funcionando pero quiere hacerlo más eficazmente, no estoy diciendo que su código sea malo o así, definitivamente es un buen código – kobe

0

Podría no sólo hacer esto?

var arVeh = vehicleText.split("|"); 

$.each(arVeh, function (idx, val) { 

    arVeh[idx] = $.trim(this); 

}); 
+0

¿Pero no sería demasiado fácil y tendría demasiado sentido? –

8

voy a sugerir que no utilizan la sobrecarga de jQuery para un simple bucle for ...

var arVeh = vehicleText.split("|"); 

for (var i = 0, l = arVeh.length; i < l; ++i) { 
    arVeh[i] = $.trim(arVeh[i]); 
}); 

Alternativamente, deshacerse de los espacios en blanco desde el principio, y evitar la necesidad para otro ciclo en absoluto.

var arVeh = $.trim(vehicleText).split(/\s*\|\s*/); 
+0

Como dije en la respuesta de @Jerry, ¿no sería demasiado fácil y tendría demasiado sentido? –

+0

Esta es claramente la mejor respuesta. La gente se obsesiona demasiado con el uso de jQuery todo el tiempo, olvidando que jQuery es solo javascript de todos modos. –

+0

Solo tengo curiosidad ... ¿tiene algún número para la sobrecarga real de $ .each? Prefiero usar $ .each por la brevedad de la sintaxis y eso es más importante para mí que un golpe de rendimiento (moderado) (probable). –

0

Sin 'creación' una matriz en el código Javascript (una matriz obstante, se creó en memoria)

vehicles = $.map(vehicleText.split("|"), function(e,i) { return $.trim(e) }); 
1
var my_arr = [' cats', 'dogs ', ' what ']; 
$.each(my_arr, function (id, val) { 
    my_arr[id] = $.trim(val); 
}); 
console.log(my_arr); 

Esto recortará el valor y ponerlo en el elemento indexado.

1

Usted no tiene que usar jQuery.Aquí está la solución de vainilla:

testArray.map(Function.prototype.call, String.prototype.trim);

llamadas Function.prototype.call TRIM() en cada uno de los elementos de la TestArray. ¡Tan sencillo como eso!

Cuestiones relacionadas