Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组在传递给函数后丢失_Javascript - Fatal编程技术网

Javascript 数组在传递给函数后丢失

Javascript 数组在传递给函数后丢失,javascript,Javascript,下面这个方法的传入数组的长度为0,下面传入的数组属性的长度为未定义,但不确定原因: function BindAlbumDropdownList(aAlbums, defaultAlbumID) { if(aAlbums.length == 0) return; var albumDropdownID = $("#abumDropdown").attr("id"); AddDropdownItem("-Select an Album-", "-1",

下面这个方法的传入数组的长度为0,下面传入的数组属性的长度为未定义,但不确定原因:

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)返回;你能试试别的浏览器吗?你能试试别的浏览器吗?