102 votes

Javascript - Appliquer la fonction trim à chaque chaîne dans un tableau

Voulez-vous découper chaque chaîne dans un tableau, par exemple, étant donné

x = [' aa ', ' bb '];

la sortie

['aa', 'bb']

Mon premier essai est

x.map(String.prototype.trim.apply)

J'ai eu une "TypeError: Function.prototype.apply was called on undefined, which is a undefined and not a function" dans chromium.

Ensuite, j'ai essayé

x.map(function(s) { return String.prototype.trim.apply(s); });

Cela fonctionne. Quelle est la différence?

5voto

yckart Points 7517

J'ai simplement comparé quelques façons de tronquer un tableau de chaînes de caractères pour obtenir la méthode la plus courte et la plus rapide. Qui est intéressé, voici un test de performance sur jsperf : http://jsperf.com/trim-array-of-strings

var chunks = "  .root  ,  .parent  >  .child  ".split(',')
var trimmed1 = chunks.map(Function.prototype.call, String.prototype.trim);
var trimmed2 = chunks.map(function (str) { return str.trim(); });
var trimmed3 = chunks.map(str => str.trim());
var trimmed4 = $.map(chunks, $.trim);

Note: jQuery est simplement là pour comparer le nombre de caractères à taper ;)

3voto

Redu Points 11722

S'inspirant de la réponse parfaite de Bergi, j'aimerais juste ajouter que, pour les méthodes qui ne prendront pas un argument this, vous pouvez accomplir le même travail comme suit;

var x = [' aa ', ' bb '],
    y = x.map(Function.prototype.call.bind(String.prototype.trim))

3voto

Martín Silva Points 47

Gardez-le simple et stupide :

Code

[' aa ', ' b b ', '   c c '].map(i=>i.trim());

Output

["aa", "b b", "c c"]

1voto

Amr Points 779
var x = [" aa ", " bb "];
console.log(x); // => [" aa ", " bb "]

// remove whitespaces from both sides of each value in the array
x.forEach(function(value, index){
  x[index] = value.trim();
});

console.log(x); // => ["aa", "bb"]

Tous les principaux navigateurs prennent en charge forEach(), mais notez que IE ne le prend en charge que à partir de la version 9.

1voto

Surojit Paul Points 732
x = [' aa ', ' bb ', 'cccc '].toString().replace(/\s*\,\s*/g, ",").trim().split(",");

console.log(x)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X