1

我将一些日期放入一个数组中,并希望该数组中的第二个“层”保存与该日期关联的订单号。它似乎工作正常,但是当我在 chrome 控制台中打印出数组时,我只看到第一个日期数组。如果我手动访问console.log(dateArray[1]['order_number']);,我会看到预期的信息。我没有正确构建这个数组吗?

谢谢!

    for ( var u in valuesArr ) {

        //store the text seperator between the information and the order it is associated with
        var sep = "?order_num=";

        //store the string from which the information and order number will be extracted
        var str = valuesArr[u];

        //location of seperator
        var start = str.indexOf("?order_num=");

        var order_number = str.substring(start+sep.length);

        var current_date = valuesArr[u].substring(0, start);

        //date goes into "current_date" array
        current_date = current_date.split(" / ");

        //fashion it into a javascript date
        //month needs one subtracted
        dateArray[u] = new Date ( current_date[2], current_date[0]-1, current_date[1]);

        /*
        *to identify from which order this date derives, an order_number slot is created
        *underneath the sorted date slot
        *this is done so that when the html is reformatted to re-order the dates
        *the content associated with this date can be 'brought along with' it
        *as the its parent div's id contains the order number
        */
        dateArray[u]['order_number'] = order_number;

    }
    console.log(dateArray)//only outputs the array of dates
    console.log(dateArray[1]['order_number']);//outputs the order number
4

3 回答 3

2

您正在做的dateArray[u]['order_number'] = order_number;是向 Date 对象添加一个属性,而不是向数组添加一个元素。

要将元素添加到数组中,请使用:

dateArray[u][1] = order_number;
于 2012-06-05T18:49:14.007 回答
2

不要暗中信任开发者控制台。没有“正确”的印刷,因为没有标准。

如果 Chrome 决定不在对象上显示自定义属性,则由 Chrome 决定。只要通过显式测试证明您的价值就在那里,这就是最重要的。


FWIW,您可能会得到更理想的结果......

console.dir(dateArray)

console.dir方法将为您提供可扩展的对象,以便您可以向下钻取并查看您的自定义属性。

于 2012-06-05T18:49:34.400 回答
0

如果valuesArr是一个数组,那么 usingfor (... in ...)将失败,因为这会进行对象迭代,因此会抓取数组的许多其他元素,例如length,indexOf等。

尝试改用传统for循环:

for (var i = 0; i < valuesArr.length; i++) {
  // ...
}
于 2012-06-05T18:46:10.887 回答