2010-10-14 7 views
1

Hey, Question facile, mon cerveau est vide aujourd'hui .. J'ai un tableau avec le mois (1-12) et un mois donné.Déterminer mois -3 et +3 en JavaScript

var cMonate = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", 
          "August", "September", "Oktober", "November", "Dezember"); 

Mon mois donné:

var Month = currentMonth.getMonth(); 

mois est 8. Maintenant, je vais lire les 3 derniers mois et le mois à venir.

échantillon Facile: peut juin juillet août septembre octobre novembre

Comment puis-je savoir?

Répondre

0

considérera votre mois comme une série infinie, à partir de -infinity, en allant à -3, -2, -1, 0, 1, 2, ..., 12, 13, 14, ...

Ensuite, il est facile:

for(var infindex = monthindex-3; infindex < month+4; ++infindex) { 
    return month(infindex); 
} 

Ensuite, vous pouvez créer un mappage de l'indice infini à la séquence toujours récurrente:

function month(infiniteindex) { 
    var index = infinteindex % 12; // since every 12 months, the same month occurs. 
    // EDIT --- javascript allows negative result for modulo 
    if(index < 0) index = index+12; 
    return cMonate[index]; 
} 
+0

var cMonate = new Tableau ("Januar", "Februar", "M ä rz", "Avril", "Mai", "Juni", "Juli", "Août", "Septembre", "Oktober", "Novembre", "Dezember"); Pour pour (var infindex = Monat-3; infindex Patrik

+1

Ceci est faux: si 'infindex' est -2, -2% 12 == -2, et' cMonat [-2] 'est' undefined'. – sje397

+0

@ sje397: darn - en effet: la norme ECMAScript dicte que 'abs (k) xtofl

2
for(var m = Month - 3; m <= Month + 3) { 
    var usedMonth = (m < 1 ? m + 12 : (m > 12 ? m - 12 : m)); 
    // use 'usedMonth' here for whatever...e.g.: 
    console.log(cMonate[usedMonth-1]); 
} 
+0

Hey, ce qui est console.log (cMonate [usedMonth-1]); ? Pouvez-vous l'expliquer pour moi? – Patrik

+0

@Patrik: console.log imprime simplement une chaîne (en FF si vous installez firebug, ou dans les outils de développement Chrome). Vous avez un tableau (qui en javascript sont indexés à partir de 0) des noms de mois 'cMonate'. Comme les index 'cMonate' commencent à 0 et' usedMonth' commence à 1, vous devez en soustraire un. Donc, cela imprime simplement les mois, selon votre «sortie de l'échantillon». – sje397