私はspotifyプレイリストからすべてのトラックを取り出す非常に簡単なアプリケーションを書いています。まず、AJAXリクエストを使用してトラックJSONオブジェクトを取得し、tracks[]
という配列に配置します。コンソールに定義された文字列が未定義として印刷されるのはなぜですか?
次に、私はこの配列を反復処理し、各繰り返しで曲の名前と各トラックのアーティスト名の文字列を取り出します。私はこれらを集中した文字列に入れます。この文字列は、complete
という新しい配列に格納されます。これはトラックごとに行われます。
基本的に、complete
は、私は奇妙な問題を持っている。この時点で
[
"Sympathy for The Devil, The Rolling Stones",
"Come Together, The Beatles",
...
]
のようになります配列です。 chromeのデバッガによれば、配列complete
には、その内部のすべての正しい値があります。しかし、私がconsole.log
の要素をcomplete
にしようとすると、値が 'undefined'になります。見知らぬ人ですが、私がconsole.log
の式を使って2つの文字列を取得してステッチすると、正しい値が出力されます。
保存されたJSONオブジェクトを反復処理し、新しい配列に格納したコードがあり
、およびプリントconsole.log
ことができますので、私はそれをどのように修正することができます。
function print() {
for(var x = 0; x < 4; x++) {
for(var n = 0; n < 100; n++) {
try {
//this logs correct
console.log(tracks[x].items[n].track.name + " " + tracks[x].items[n].track.artists[0].name);
//these have correct value
var deb = (tracks[x].items[n].track.name + " " + tracks[x].items[n].track.artists[0].name);
complete[z] = deb;
z++;
console.log(deb); //throws no error, prints fine
console.log(complete[z]); //prints undefined
} catch(err) {
//no exception ever thrown
}
}
}
}
を
私はあまりJSをやっていない、私は何かが明らかでない場合は申し訳ありません。
'complete'を配列として宣言し、' z'をintとして宣言しましたか? –
@Œlrimスクリプトの開始時に、この関数が呼び出されるかなり前に 'var complete = new Array(400);'これが間違っていると私は謝ります。 ) –