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

时间:2015-11-26 18:26:57

标签: javascript arrays angularjs firebug

以下是截图,我无法用JavaScript跟踪这里出现的问题。

如果你看到firebug中的数组显示一个空白数组,并且如果我控制它的长度,它也会显示 //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; 。但是,如果我单击(+)图标显示数据。让我知道我在代码中做错了什么。

代码 -

UIImageView* myImageView = [[UIImageView alloc]initWithFrame:self.view.frame];
[myImageView setImage:[UIImage imageNamed:@"yourImage.jpg"]];
[self.view addSubview:myImageView];

Firebug屏幕截图 -

Image

2 个答案:

答案 0 :(得分:2)

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

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

myObj.myProp

因此,上述观点是方括号表示法是一种引用对象var label = "myProp"; myObj[label] = "xyz"; 的方法。在您的代码中,您执行此操作:

properties

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

你可能想要的只是

'week'+weekNum

答案 1 :(得分:1)

Array的索引来自0及以上。您的数组不包含任何项目。虽然它确实有属性。

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