Javascript: scinde une chaîne en un tableau 2d
J'ai une chaîne de mois et d'années:
var months= "2010_1,2010_3,2011_4,2011_7";
Je veux faire cela dans un tableau 2d à l'année dans la première position de chaque tableau et le mois dans la deuxième position. En d'autres termes, je veux retrouver avec ceci:
var monthArray2d = [[2010,1],[2010,3][2011,4],[2011,7]];
La façon dont je le fais actuellement est:
//array of selected months
var monthArray = months.split(",");
//split each selected month into [year, month] array
var monthArray2d = new Array();
for (var i = 0; i < monthArray.length; i++) {
monthArray2d[i] = monthArray[i].split("_");
Est-il un moyen de condenser le code de sorte que je n'ai jamais besoin d'utiliser le monthArray
var?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
replace
pour obtenir des code plus compact:ou carte si votre cible navigateur prend en charge:
Fondamentalement, la première fonction semble pour l'année/le mois de motifs "chiffres soulignent chiffres", et stocke chaque trouvés sous-chaîne dans un tableau. Bien sûr, vous pouvez utiliser d'autres délimiteurs au lieu de soulignement. La fonction ne s'inquiète pas des valeurs " séparateur (virgule), de sorte qu'il peut être ce que. Exemple:
Si condensée est ce que vous êtes après:
JavaScript est une autre dynamique de la langue et de son type de variable permet de garder quelque chose où vous le souhaitez. Vous avez la scission de droite, maintenant divisée en chaîne avec
_
et de le remettre là.Voir cet exemple:
Je ne sais pas ce que tu veux dire par ne pas utiliser
monthArray
. Le code ci-dessus est le moins que l'on puisse faire, sans doute!À diviser chaque split est une chose sensée à faire-
vous pouvez utiliser une expression régulière correspondant le trait de soulignement séparés numéros,
et l'insertion de chaque paire dans son propre tableau poussé vers le mois de la matrice de
mais je ne vois pas d'amélioration par rapport à votre code: