无法读取未定义的属性

时间:2016-08-04 21:47:35

标签: 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++){
           newarr.push(newTracks[i].track.id);
       }
    iframeSrc += newarr.join();
    iframe.src = iframeSrc;
    console.log(iframe.src);
}

当我试图将轨道id推入newarray时,我得到一个错误,说不能读取未定义的属性轨道(即newTracks [i])。但相反它的工作正常,而不是在newarr我推动它我只是console.log(newTracks [i] .track.id),我得到所有的ID。如图所示,newTracks是一个包含 - > track-> id的对象数组。救命!

1 个答案:

答案 0 :(得分:4)

您的--parallel循环格式错误:

for

应该是:

for(var i=0;newTracks.length;i++){

你的循环版本将循环超出for(var i=0; i<newTracks.length; i++){ 的范围,因为它只测试newTracks数组不为空,它不是(不是你增加了多少次) I 的)。

因此,当 i == newTrack.length 时,您将解决一个不存在的数组元素(newTracks),从而导致您获得错误。

如果您只是将undefined添加为循环中的第一个语句,则可以找出这些类型的问题。然后你会看到它是如何超出界限的......