2010-12-10 11 views
17

Je divise une chaîne en tableau, puis je veux supprimer l'espace blanc autour de chaque élément. J'utilise jQuery. Je suis capable de le faire avec succès avec 2 baies mais je sais que ce n'est pas correct. Comment faire une boucle dans un tableau et découper chaque élément pour que les éléments conservent ce changement. Merci pour tous les conseils. Voici mon code de travail en utilisant deux tableaux. S'il vous plaît montrez-moi la bonne façon de le faire.jQuery. Chaque aide, je veux couper() toutes les chaînes dans un tableau

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

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

    }); 

Cheers, ~ ck à San Diego

+0

vous voulez le faire plus efficacement en ne déclarant pas le deuxième tableau ?? – kobe

+0

oui je voudrais utiliser seulement un tableau, arVeh – Hcabnettek

Répondre

49

Vous n'avez même pas vraiment besoin des paramètres idx ou val. Cela semble fonctionner sur jsFiddle:

var cleanVehicles = []; 

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

EDIT: Maintenant que je l'ai vu ce que vous êtes vraiment après, essayez d'utiliser la carte:

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

Si vous regardez un peu plus près de sa question, il dit qu'il sait déjà comment faire cela. Il veut prendre un tableau et dépouiller simplement les espaces sans créer un autre tableau. –

+0

J'ai vu ça juste après avoir posté, et j'ai mis à jour ma réponse pour utiliser la carte. –

+1

mise en œuvre très propre Chris D, merci! – Hcabnettek

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

trimArray(vehicleArray); 

devrait faire l'affaire

Ou vous pouvez utiliser une partie de la puissance impressionnante de javascript et utiliser array.prototype. Je suis encore un peu nouveau à l'utilisation du .prototype de n'importe quel objet ... donc ce n'est pas garanti pour fonctionner (mais il peut certainement être fait).

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

someArray.trim() 
+0

@darek, il veut le faire avec un seul tableau ??? – kobe

+0

Oui, il veut un moyen de réduire facilement les valeurs d'un tableau. –

+0

@Darek, non s'il vous plaît voir son commentaire ci-dessus, son code fonctionne, mais il veut faire plus efficacement, je ne dis pas que votre code est mauvais ou, certainement son code sympa – kobe

0

pourriez-vous pas faire exactement cela?

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

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

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

}); 
+0

Mais ce ne serait pas trop facile et trop logique? –

8

Je vais suggérer de ne pas utiliser les frais généraux de jQuery pour une simple boucle ...

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

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

Alternativement, se débarrasser des espaces blancs depuis le début, et d'éviter la nécessité pour une autre boucle du tout.

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

Comme je l'ai dit sur la réponse @ Jerry - ce ne serait pas trop facile et trop logique? –

+0

C'est clairement la meilleure réponse. Les gens deviennent trop obsédés par l'utilisation de jQuery tout le temps, oubliant que jQuery est juste javascript de toute façon. –

+0

Je suis juste curieux ... avez-vous des chiffres pour le coût réel d'un $ .each? Je préfère utiliser $ .each pour la brièveté de la syntaxe et c'est plus important pour moi qu'un coup de performance (modéré). –

0

Sans « créer » un tableau dans le code javascript (un tableau sera néanmoins créé en mémoire)

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); 

Cette taillera la valeur et le mettre à l'élément indexé.

1

Vous n'avez pas besoin d'utiliser JQuery.Voici votre solution de vanille:

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

appels Function.prototype.call trim() sur chacun des éléments du TestArray. Aussi simple que cela!