Javascript 数组在传递给函数后丢失
下面这个方法的传入数组的长度为0,下面传入的数组属性的长度为未定义,但不确定原因:Javascript 数组在传递给函数后丢失,javascript,Javascript,下面这个方法的传入数组的长度为0,下面传入的数组属性的长度为未定义,但不确定原因: function BindAlbumDropdownList(aAlbums, defaultAlbumID) { if(aAlbums.length == 0) return; var albumDropdownID = $("#abumDropdown").attr("id"); AddDropdownItem("-Select an Album-", "-1",
function BindAlbumDropdownList(aAlbums, defaultAlbumID)
{
if(aAlbums.length == 0)
return;
var albumDropdownID = $("#abumDropdown").attr("id");
AddDropdownItem("-Select an Album-", "-1", "albumDropdown");
for(var a in aAlbums)
{
alert("a.name, a.id, albumDropdown: " + a.name + "|" + a.id + "|" + albumDropdownID);
AddDropdownItem(a.name, a.id, albumDropdownID);
}
}
我正在传入一个数组,该数组是在前面调用此方法的另一个方法中定义的,该数组的定义和传递方式如下:
var aAlbums = GetAllAlbums(userID, accessToken);
var defaultAlbumID = aAlbums[0].id;
BindAlbumDropdownList(aAlbums, defaultAlbumID)
GetAllAlbums返回的变量设置如下所示:
var aFacebookAlbums = []; // array
并在填充后返回此数组
但是,当我在BindAlbumDropdownList中输入for循环时,数组属性就没有定义,并且长度检查为零
以下是警报给我的信息:
a.name, a.id, albumDropdown: undefined|undefined|albumDropdown
我确信GetAllAlbums正在返回一个包含值的数组,因为var defaultAlbumID=aAlbum[0].id代码>给我一个有效值
我注意到BindAlbumDropdownList似乎并不知道传入的aAlbums是一个数组,尽管我正在向它传递一个数组。因为在尝试执行aAlbum.length时,我没有得到显示属性数组的intellisense,但在从GetAllAlbums函数返回它之前,我确实在数组上得到了.length属性。您应该使用而不是
for(i=0;i
您应该使用而不是
for(i=0;i
是否确定包含jQuery ok?选择器id的“abumDropdown”正确吗?您可以将for…in与javascript中的数组一起使用,即使不推荐使用。您确定包含jQuery ok吗?选择器id的“abumDropdown”正确吗?你可以在javascript中使用…和数组,即使不推荐使用。糟了,我以前从来没有得到过一个数组,在我兴奋的时候,我在一条评论中回答说lol
如果你问的是
0.name
1.姓名
2.姓名
?
现在,如果你问的是
a[0]。名称
a[1]。名称
a[2]。名称
for(var a in aAlbums)
{
alert("aAlbums[a].name, aAlbums[a].id, albumDropdown: " + a.name + "|" + a.id + "|" + albumDropdownID);
AddDropdownItem(aAlbums[a].name, aAlbums[a].id, albumDropdownID);
}
废话我从来没有得到过一个之前,在我的兴奋,我回答了一个评论哈哈
如果你问的是
0.name
1.姓名
2.姓名
?
现在,如果你问的是
a[0]。名称
a[1]。名称
a[2]。名称
for(var a in aAlbums)
{
alert("aAlbums[a].name, aAlbums[a].id, albumDropdown: " + a.name + "|" + a.id + "|" + albumDropdownID);
AddDropdownItem(aAlbums[a].name, aAlbums[a].id, albumDropdownID);
}
所以基本上for(var a in.)相当于foreach,明白了吗?@coffeeaddict:你用for。。。在对象循环中,a/k/a“关联”数组。一旦你将一个数组实例化为一个索引数组,你就必须使用一个重复循环,就像Reigel向你展示的那样。@coffeeaddict:我在上面添加了一些链接<代码>for语句
用于数组<代码>for in语句for JSON变量之类的对象…但是为什么我会得到0作为警报以检查长度?如果(aAlbums.length==0)返回;所以基本上for(var a in.)相当于foreach,明白了吗?@coffeeaddict:你用for。。。在对象循环中,a/k/a“关联”数组。一旦你将一个数组实例化为一个索引数组,你就必须使用一个重复循环,就像Reigel向你展示的那样。@coffeeaddict:我在上面添加了一些链接<代码>for语句用于数组<代码>for in语句for JSON变量之类的对象…但是为什么我会得到0作为警报以检查长度?如果(aAlbums.length==0)返回;你能试试别的浏览器吗?你能试试别的浏览器吗?