Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Javascript Objects - Fatal编程技术网

Javascript 无法读取未定义的属性

Javascript 无法读取未定义的属性,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,这是我的密码: function makeIframePlayer(newTracks){ var iframe = document.querySelector("iframe"); var iframeSrc="https://embed.spotify.com/?uri=spotify:trackset:PREFEREDTITLE:"; var newarr = new Array(); for(var i=0;newTracks.length;i+

这是我的密码:

function makeIframePlayer(newTracks){
     var iframe = document.querySelector("iframe");
     var iframeSrc="https://embed.spotify.com/?uri=spotify:trackset:PREFEREDTITLE:";
     var newarr = new Array();
     for(var i=0;newTracks.length;i++){
           newarr.push(newTracks[i].track.id);
       }
    iframeSrc += newarr.join();
    iframe.src = iframeSrc;
    console.log(iframe.src);
}
当我试图将track id放入newarray时,我遇到了一个错误,表示无法读取undefinedi.e的属性track。纽特拉克[i]。但相反,如果不将其放入newarr i just console.log newTracks[i].track.id中,它就可以正常工作,我将获得所有id。如图所示,newTracks是一个包含->轨迹->id的对象数组。帮助

您的for循环格式不正确:

for(var i=0;newTracks.length;i++){
应该是:

for(var i=0;  i<newTracks.length;  i++){
您的循环版本将超出newtrack的范围,因为它只是测试newtrack数组是否为空,这与增加i的次数无关

因此,当i==newTrack.length时,您将寻址一个不存在的数组元素,该数组元素未定义导致出现错误


如果只添加console.logi,newTrack[i].length,newTrack[i];作为循环中的第一个语句。然后您会看到它是如何运行的超出范围的…

在Javascript调试器中对i的值进行简单的检查可以帮助您解决问题。