//global var
var siblings = [];
var rand = new Date().getTime();
siblings.push('uin_' + rand);
alert(siblings['uin_' + rand]); // undefined
为什么未定义?我基本上想要实现的是拥有一个全局对象,该对象将成为存储其中保存有关其他对象的信息的存储。但回到我的问题。我按下了值然后我想提醒它但是未定义...为什么未定义?
答案 0 :(得分:6)
.push
将其附加到数组中,siblings[0]
包含它,因为它是(以前)空数组中的第一个元素。
如果您想自己确定密钥,请执行
siblings = {};
siblings['key'] = 'something';
如果要访问每个元素,则以其他方式遍历数组
for ( var l = siblings.length, i = 0; i<l; ++i ) {
alert( siblings[i] )
}
注意:数组是对象,所以我可以在数组上设置siblings['key'] = 'something';
,但这不是首选。
答案 1 :(得分:2)
siblings
是一个数组。您将值'uin_'+rand
推到其上,因此键将为0
。相反,你想要创建一个对象。
var siblings={};
var rand=+new Date();
siblings['uin_'+rand]="something";
alert(siblings['uin_' + rand]);
答案 2 :(得分:0)
因为您将字符串值推送到数组索引0
,然后尝试在数组对象上获取不存在的属性。
尝试使用Array.pop()
。
答案 3 :(得分:0)
为了访问数组,你需要使用数组索引,它基本上是指你想要第1,第2,第3等等。
在这种情况下,请使用siblings[0]
。
答案 4 :(得分:0)
因为siblings
是一个数组,而不是一个关联数组。两种解决方案:
//global var - use as an array
var siblings = [];
var rand = new Date().getTime();
siblings.push('uin_' + rand);
alert(siblings[0]); // undefined
//global var - use as an associative array
var siblings = {};
var rand = new Date().getTime();
siblings.push('uin_' + rand);
alert(siblings['uin_' + rand]); // undefined