JavaScript - 使用数组索引转换为字符串

时间:2012-07-07 20:53:52

标签: javascript arrays string

我从一本书中得到了这段代码,我不明白这句话“mm = months [mm]”如何转换为月份名称字符串:

function init(){
    var panel = document.getElementById("panel");

    var days=["sun","mon","tue","wed","thur","fri","sat"];
    var months=["jan","feb","mar","apr","may","jun",
    "jul","aug","sep","oct","nov","dec"];

    var now = new Date();

    var yy = now.getFullYear();
    var mm = now.getMonth();
    var dd = now.getDate();
    var dy = now.getDay();

    mm=months[mm];  //convert to month name string
    dy=days[dy];  //convert to month name string

    var str = dy+","+mm","+dd+","+yy;
    panel.innerHTML+="us date string: "+str;
    str = dy+","+dd+" "+mm+","+yy;
    panel.innerHTML+="<br>uk date string: "+str;
}
window.onload=init();

我的问题是mm=months[mm]dy=days[dy](转换为月份或日期名称字符串)的确切作用。我不明白这句话“mm = months [mm]”如何转换为月份名称字符串,当月份是数组时。这只是一些数组功能的构建吗?

5 个答案:

答案 0 :(得分:2)

mm是语句mm=months[mm]开头的数字,因此它返回mm数组中months值的字符串。在JavaScript中,变量不是严格类型的,因此它会将此字符串插入变量mm

答案 1 :(得分:0)

mm是一个0-11之间的数字,表示从中检索它的日期对象的特定月份。 months是一个包含所有月份名称的数组。如果您说mm = months[mm],则表示mm等于mm数组中months位置的字符串。这令人困惑,因为他们使用相同的变量名称。做这样的事情可能更好:

var mm = now.getMonth();
alert(mm); // will alert 6
var monthName = months[mm]; // will alert July, which is position 7 in the months array

mm为6的原因是因为某些原因的月数是0索引的,这意味着它们从0开始并转到11; 1月将是0和12月11日。

答案 2 :(得分:0)

days是一个数组。给定索引dy=0days[dy]返回"sun",这是数组中的第0个值。同样,给定索引dy=1days[dy]返回"mon",这是数组中的第一个值。等等。

months的相同概念。

但正确的答案应该是“在Javascript或jQuery中使用一些内置函数”。有关详细信息,请参阅此post。从长远来看,滚动你自己的日期时间转换功能几乎肯定会回来并咬你。

答案 3 :(得分:0)

假设日期是08,月份是7月。

var yy = now.getFullYear();   
var mm = now.getMonth();    // month is 7 now
var dd = now.getDate();     // dd is 8 now
var dy = now.getDay();

现在,

mm=months[mm];

手段,

mm = months[7];

// in months array, at seventh index we have july,

所以mm是7月。

没有它不转换,而是使用基于索引的数组中的值。

答案 4 :(得分:0)

mm=month[mm]获取mm数组中索引now.getMonth()(由months返回)的值,并将其放入mm变量中。对于dy=days[dy]来说,这同样适用。

我认识到代码编写得很糟糕。 mm2=month[mm]之后使用mm2(而不是“新”mm)应改为编写。