Je veux obtenir la position des points et des virgules dans un tableau.
w.wer,ads,
devrait donner quelque chose comme :
[0] > 1
[1] > 5
[2] > 9
Comment cela peut-il être fait avec javascript ?
Je veux obtenir la position des points et des virgules dans un tableau.
w.wer,ads,
devrait donner quelque chose comme :
[0] > 1
[1] > 5
[2] > 9
Comment cela peut-il être fait avec javascript ?
Option 1
Il suffit de parcourir en boucle chaque caractère de la chaîne :
var myString = "w.wer,ads,";
var matchedIndexes = [];
for (var i = 0; i < myString.length; i++) {
if (myString[i] == "," || myString[i] == ".") {
matchedIndexes.push(i);
}
}
Voici un violon en état de marche .
Option 2
Si vous voulez aller plus loin, vous pouvez créer un objet qui stocke la position y le caractère à cette position :
var myString = "w.wer,ads,";
var matchedIndexes = [];
for (var i = 0; i < myString.length; i++) {
if (myString[i] == "," || myString[i] == ".") {
matchedIndexes.push(new myMatch(myString[i], i));
}
}
function myMatch(position, character) {
this.position = position;
this.character = character;
}
Résultat :
Voici un violon en état de marche .
Ce n'est probablement pas l'idéal, mais à titre d'expérience, voici une façon de le faire avec des fonctions javascript intégrées (pas de boucles explicites) :
var pos = mystr.split(/[,.]/).slice(0,-1).map(function(val, i, a) { return a.slice(0, i+1).join('').length+i; });
Démonstration : http://jsfiddle.net/jtbowden/hHSB2/
Pour se débarrasser des .slice()
qui est O(n^2)
:
var pos = mystr.split(/[,.]/).slice(0,-1).map(function(val, i, a) { return a[i] = val.length+(a[i-1]||-1)+1; });
Démonstration : http://jsfiddle.net/jtbowden/hHSB2/1/
Et, oui, c'est toujours aussi laid et inutile.
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.