为什么对象数组在 firebug 中显示为空白,尽管它包含项目 - Javascript + AngularJS

Why array of objects is showing blank in firebug though it contain items - Javascript + AngularJS

以下是屏幕截图,我无法追踪 JavaScript 这里出了什么问题。

如果您看到 firebug 中的数组显示的是一个空白数组,如果我安慰它的长度,它也会出现 0。但是,如果我单击 (+) 图标,它会显示数据。让我知道我在代码中做错了什么。

代码-

            //scope.days is an array of objects
            var newArr = [];
            var myArr = [];
            myArr = scope.days;
            console.log(myArr.length);
            var weekNum = 1;
            newArr['week'+weekNum] = [];
            for(var i=1; i<= myArr.length; i++) {
                newArr['week'+weekNum].push(myArr[i]);
                if(i%7 == 0){
                    weekNum = weekNum + 1;
                    newArr['week'+weekNum] = [];
                }
            }
            scope.days = newArr;

Firebug截图-

Array 的索引从 0 开始。您的数组不包含任何项目。虽然它确实有属性。

您像 Object 一样使用它。如果您这样定义它 (newArr = { }),Firebug 会更好地了解如何渲染它。

了解可以使用方括号或点表示法访问对象会很有帮助。另请注意,数组也是对象

因此 myObj 和 属性 myProp 可以使用 myObj["myProp"]myObj.myProp 访问。当我们想要动态访问 属性 但我们在设计时不知道它的标识符时,方括号符号很有用。即我们要使用动态创建的标签:

var label = "myProp";
myObj[label] = "xyz";

所以上面的要点是方括号符号是引用对象 properties 的一种方式。在你的代码中你这样做:

newArr['week'+weekNum] = [];

显然是为了使用 'week'+weekNum 作为数组的索引,但它实际上做的是进行 属性 赋值。因此,您可以继续 'week'+weekNum 整个星期,并且数组长度仍将为零,因为您没有将元素分配给数组,而是生成新属性。

您可能想要的只是

newArr[weekNum] = [];