【问题标题】:Store values to array in loop using javascript/jquery使用 javascript/jquery 将值存储到循环中的数组
【发布时间】:2012-05-26 19:27:38
【问题描述】:

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

<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

所以数组结构类似于上面,其中年份将是唯一的,并且具有相同年份的每个月都将存储到其引用的年份。

谢谢!

【问题讨论】:

    标签: javascript jquery multidimensional-array


    【解决方案1】:

    在这种情况下,您不需要一个经典数组,而是一个关联数组,它在 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 内容中检索您需要的值并不是一个好主意。为什么必须这样做?

    【讨论】:

    • 如何将月份对象提取到数组中?因为什么时候做警报(months.length)它警报未定义......谢谢
    • 当然是undefined,不是数组。你没有说你想要那样的东西。但是您可以使用for...in 语句来遍历对象并计算它们。或者,您可以在定义新年时将计数保存在单独的变量中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2013-08-19
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多