使用javascript / jquery将值存储到循环中的数组中

时间:2012-05-26 19:27:38

标签: javascript jquery multidimensional-array

我有一个日期和年份列表如下所示:

<ul>
    <li>Jan 2010</li>
    <li>Mar 2010</li>
    <li>Jan 2011</li>
    <li>Jan 2012</li>
    <li>Mar 2012</li>
</ul>

然后我使用元素中的jquery获取每个列出的值,并将月份和年份分开,如下面的代码:

$("ul").children("li").each(function(){
    var val = $(this).text();
    var month = val.split(" ")[0]; //get month Jan, Mar
    var year = val.split(" ")[1];  //get year 2010, 2011, 2012

    var arrDate = new Array();

    //do some code here to store the year and the month in array w/c is arrDate
});

所以这有点棘手,因为这一年不会重复,但每个月都会存放同一年,如下图所示:

2010 => Jan
     => Mar
2011 => Jan
2012 => Jan
     => Mar

所以阵列结构就像上面那样,其中年份将是唯一的,同年的每个月都将存储到其引用的年份。

谢谢!

1 个答案:

答案 0 :(得分:4)

在这种情况下,您不需要经典数组,而是需要一个关联数组,在Javascript中转换为标准对象。

var months = {};
$("ul").children("li").each(function(){
    var val = $(this).text().split(" ");
    if (val[1] in months) months[val[1]].push(val[0]);
    else months[val[1]] = [val[0]];
});

现在months是你的二维数组。

注意:我认为从DOM内容中检索所需的值并不是一个好主意。为什么要这样做?