为什么对象数组在 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] = [];
以下是屏幕截图,我无法追踪 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] = [];