260 votes

Comment convertir une chaîne de chiffres en un tableau de chiffres ?

J'ai la chaîne ci-dessous -

var a = "1,2,3,4";

quand je le fais -

var b = a.split(',');

Je reçois b como ["1", "2", "3", "4"]

Je peux faire quelque chose pour que b como [1, 2, 3, 4] ?

496voto

techfoobar Points 33807

Vous pouvez utiliser Array.map pour convertir chaque élément en un nombre.

var a = "1,2,3,4";

var b = a.split(',').map(function(item) {
    return parseInt(item, 10);
});

Vérifiez le Docs


Ou plus élégamment, comme l'a fait remarquer l'utilisateur thg435.

var b = a.split(',').map(Number);

Donde Number() ferait le reste:check aquí


Note : Pour les anciens navigateurs qui ne prennent pas en charge map vous pouvez ajouter une implémentation vous-même, par exemple :

Array.prototype.map = Array.prototype.map || function(_x) {
    for(var o=[], i=0; i<this.length; i++) { 
        o[i] = _x(this[i]); 
    }
    return o;
};

112voto

TrapII Points 855

Mes deux centimes pour les golfeurs :

b="1,2,3,4".split`,`.map(x=>+x)

backquote est une chaîne de caractères littérale, nous pouvons donc omettre les parenthèses (à cause de la nature de la fonction split) mais c'est équivalent à split(',') . La chaîne de caractères est maintenant un tableau, il nous suffit de faire correspondre chaque valeur avec une fonction retournant l'entier de la chaîne de caractères, donc x=>+x (qui est encore plus court que le Number (5 caractères au lieu de 6)) est équivalent à :

function(x){return parseInt(x,10)}// version from techfoobar
(x)=>{return parseInt(x)}         // lambda are shorter and parseInt default is 10
(x)=>{return +x}                  // diff. with parseInt in SO but + is better in this case
x=>+x                             // no multiple args, just 1 function call

J'espère que c'est un peu plus clair.

51voto

Q10Viking Points 576

C'est très simple. Par exemple :

["1", "2", "3", "4"].map(i=>Number(i))

vous pouvez lancer la démo.

let result = ["1", "2", "3", "4"].map(i=>Number(i));
console.log(result);

22voto

Aymen Points 425

Array.from() pour plus de détails, voir MDN

let a = "1,2,3,4";
let b = Array.from(a.split(','),Number);

ou

let c = ["1", "2", "3", "4"].map(Number);

b y c est un tableau de nombres.

démonstration :

let a = "1,2,3,4";
let b = Array.from(a.split(','),Number);

let c = ["1", "2", "3", "4"].map(Number);

console.log(`b: ${b}, c: ${c}`);

19voto

Matt Zeunert Points 5083

Mettez-le en correspondance avec des entiers :

a.split(',').map(function(i){
    return parseInt(i, 10);
})

map examine chaque élément du tableau, le passe à la fonction fournie et renvoie un tableau avec les valeurs de retour de cette fonction. map n'est pas disponible dans les anciens navigateurs, mais la plupart des bibliothèques telles que jQuery o soulignement inclure une version multi-navigateurs.

Ou, si vous préférez les boucles :

var res = a.split(",");
for (var i=0; i<res.length; i++)
{
    res[i] = parseInt(res[i], 10);
}

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