2010-07-15 10 views
13

¿Cómo puedo hacerlo mejor?Arreglo de mes en JavaScript No muy bonito

var month = new Array(); 

month['01']='Jan'; 
month['02']='Feb'; 
month['03']='Mar'; 

etc. Itd estaría bien hacerlo así:

var months = new Array(['01','Jan'],['02','Feb'],['03','Mar']); 

Por ejemplo. de todos modos así para simplificarlo?

+0

Para que quede claro que está creando un objeto no una matriz. En realidad estás definiendo las propiedades del mes. Por esta razón no obtendrá lo que espera si 'alerta (month.length);' – qw3n

+0

Lo siento, debería haber dicho, estoy creando un nuevo objeto de matriz ... –

+0

¿Soy el único que vine aquí solo para copiar- pegar la matriz de mes de las respuestas? (porque soy demasiado perezoso para escribir solo) –

Respuesta

18

esto debe hacerlo ..

var months = {'01':'Jan', '02':'Feb'}; 
alert(months['01']); 
+1

Maldita sea, duh, JSON ... ¡Gracias! –

+0

Ah, y lo actualizaré como la respuesta correcta después de esperar los 10 minutos que dice que tengo que esperar ... –

+0

Tenga en cuenta que si planea usar el objeto Date, los meses comienzan con 0 (es decir, Jan = 0, Feb = 1) – pyRabbit

0

No utilice una matriz a menos que estés usando índices numéricos reales. Prueba esto:

var month = { 
    '01': 'Jan', 
    '02': 'Feb', 
    // ... 
    '12': 'Dec' 
}; 

Personalmente, sin embargo, me gustaría concluir este tipo de lógica en una función:

var monthNames = ['Jan', 'Feb', /* ... */ 'Dec']; 
function getMonthName(n) { 
    return monthNames(n - 1); 
} 

alert(getMonthName(1)); // 'Jan' 

De esa manera, nunca se tiene que pensar en la estructura de datos subyacente, o preocuparse de cambiar eso mas tarde.

5

por qué no:

var month = [ 
    'Jan', 
    'Feb', 
    // ... 
    'Dec']; 

Para obtener el nombre de un mes a partir del número que haría algo como:

var monthNum = 2; // February 
var monthShortName = month[monthNum-1]; 
+3

Imagine eso, usando índices numéricos en un objeto de matriz. ¿¡Lo que sea después !? –

+1

Índices de objetos Andy, comon. 'var one = {'1': 'one'}; var month = {}; mes [uno] = "Jan"; ' – Anurag

+0

Hahah Anurag Creo que me voy a enfermar –

22

Para un enfoque más natural, prueba este pequeño fragmento. Funciona con Date objetos y así como una función regular:

'use strict'; 

(function(d){ 
    var mL = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 
    var mS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']; 

    d.prototype.getLongMonth = d.getLongMonth = function getLongMonth (inMonth) { 
     return gM.call(this, inMonth, mL); 
    } 

    d.prototype.getShortMonth = d.getShortMonth = function getShortMonth (inMonth) { 
     return gM.call(this, inMonth, mS); 
    } 

    function gM(inMonth, arr){ 
     var m; 

     if(this instanceof d){ 
      m = this.getMonth(); 
     } 
     else if(typeof inMonth !== 'undefined') { 
      m = parseInt(inMonth,10) - 1; // Subtract 1 to start January at zero 
     } 

     return arr[m]; 
    } 
})(Date); 

puede copiar y pegar directamente esto, a continuación, utilizar de esta manera:

var today = new Date(); 
console.log(today.getLongMonth()); 
console.log(Date.getLongMonth(9));   // September 
console.log(today.getShortMonth()); 
console.log(Date.getShortMonth('09'));  // Sept 

Esta técnica proporcionará flexibilidad en cuanto a la forma en que el índice y cómo acceder a él. Al usar el objeto Date funcionará correctamente, pero si lo usa como una función independiente, considera los meses en formato legible para personas del 1-12.

Fiddle with it!

+0

Esto sirve como una gran base para un mayor desarrollo. ¡Y gracias por el violín! – Andrejs

0

Aquí es enfoque muy simple para obtener el nombre del mes:

<script> 
function getMonth(month){ 
    month = month-1; 
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; 

    if(months[month] != null){ 
     return months[month]; 
    }else{ 
     throw "Invalid Month No"; 
    } 
} 

try{ 
    monthName = getMonth(8); 
    alert("Month Is : " + monthName); 
}catch(e){ 
    console.log(e); 
} 
</script> 
0
import java.util.*; 

public class NumOfMonth 
{ 
    public static void main(String args[]) { 

    Scanner in = new Scanner (System.in); 

    String months[] = {"","Jan", "Feb", "March", "april" , "june", "july", "august", "sept", "oct", "nov","Dec`1"}; 
    int m = 0; 
    System.out.format("enter the number of month:"); 
    m = in.nextInt(); 
    System.out.println(months[m]); 
    } 
} 
+3

Este no es el idioma correcto. –