2010-07-15 25 views
13

Làm cách nào để tôi có thể làm đẹp hơn?Tháng Mảng trong JavaScript Không đẹp

var month = new Array(); 

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

, vv ITD được tốt đẹp để làm điều đó thích:

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

Ví dụ. dù sao như vậy để đơn giản hóa nó?

+0

Để được rõ ràng bạn đang tạo một đối tượng không phải là một mảng. Bạn đang thực sự xác định các thuộc tính của tháng. Vì lý do này bạn sẽ không nhận được những gì bạn mong đợi nếu bạn 'alert (month.length);' – qw3n

+0

Xin lỗi, tôi nên nói, im tạo một đối tượng mảng mới ... –

+0

Tôi là người duy nhất đến đây chỉ để sao chép- dán mảng tháng từ câu trả lời? (bởi vì tôi quá lười biếng để viết một mình) –

Trả lời

18

này nên làm điều đó ..

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

chết tiệt, duh, JSON ... Cảm ơn! –

+0

Ồ, và bạn cập nhật những câu trả lời đúng sau khi đợi 10 phút, tôi phải đợi ... –

+0

Hãy nhớ rằng nếu bạn định sử dụng đối tượng Date tháng bắt đầu bằng 0 (tức là Jan = 0, Feb = 1) – pyRabbit

0

Không sử dụng một mảng, trừ khi bạn đang sử dụng chỉ số số thực. Hãy thử điều này:

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

Cá nhân, tuy nhiên, tôi sẽ quấn loại logic trong một hàm:

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

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

Bằng cách đó, bạn không bao giờ phải suy nghĩ về cấu trúc dữ liệu cơ bản, hoặc lo lắng về việc thay đổi trễ rồi.

5

tại sao không:

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

Để có được tên tháng với con số bạn muốn làm điều gì đó như:

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

Hãy tưởng tượng rằng, bằng cách sử dụng các chỉ mục số trên một đối tượng mảng. Dù gì tiếp theo !? –

+1

Chỉ mục đối tượng Andy, comon. 'var one = {'1': 'one'}; var month = {}; tháng [một] = "Jan"; ' – Anurag

+0

Hahah Anurag Tôi nghĩ rằng tôi sẽ bị bệnh –

22

Đối với một cách tiếp cận tự nhiên hơn, hãy thử đoạn này rất ít. Nó hoạt động với Date đối tượng và cũng giống như một chức năng thường xuyên:

'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); 

Bạn có thể trực tiếp sao chép và dán, sau đó sử dụng nó như thế này:

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

Kỹ thuật này sẽ cung cấp sự linh hoạt như thế nào bạn chỉ số và cách bạn truy cập nó. Khi sử dụng đối tượng Date, nó sẽ hoạt động chính xác, nhưng nếu sử dụng nó như một hàm độc lập, nó sẽ xem xét các tháng ở định dạng có thể đọc được từ 1-12.

Fiddle with it!

+0

Điều này phục vụ như là một cơ sở tuyệt vời để phát triển hơn nữa. Và cảm ơn cho fiddle! – Andrejs

0

Đây là cách tiếp cận rất đơn giản để có được tên tháng:

<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

Đây không phải là ngôn ngữ chính xác. –

Các vấn đề liên quan