![](/img/trans.png)
[英]An Inaccessible JavaScript Object property - Why is Firebug showing this?
[英]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屏幕截图-
理解可以使用括号或点表示法访问对象很有帮助。 另请注意, 数组也是对象 。
所以myObj
与属性myProp
可使用任一被访问myObj["myProp"]
或myObj.myProp
。 当我们要动态访问属性但在设计时不知道它的标识符时,方括号表示法很有用。 即我们要使用动态创建的标签:
var label = "myProp";
myObj[label] = "xyz";
因此,以上观点是,方括号表示法是一种引用对象properties
的方法。 在您的代码中,您可以执行以下操作:
newArr['week'+weekNum] = [];
显然,其目的是使用'week'+weekNum
作为数组的索引,但是实际上它是在进行属性分配。 因此,您可以继续将'week'+weekNum
整周,并且数组长度仍为零,因为您没有为数组分配元素,而是生成了新的属性。
您可能想要的只是
newArr[weekNum] = [];
Array
的索引从0
开始。 您的数组不包含任何项目。 尽管它确实具有属性。
您像使用Object
一样使用它。 如果要这样定义它( newArr = { }
),Firebug将对如何呈现它有一个更好的想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.