タイトルを指定して、ウィキペディアのページにリンクされているすべての記事の配列を返すことになっている JavaScript の関数があります。
ここにあります:
function getLinksFrom(title, returnArray, plcontinue) {
var url = 'http://en.wikipedia.org/w/api.php?action=query&prop=links&titles=' + title + '&format=json&pllimit=500&plnamespace=0&callback=?';
if (!returnArray) {
returnArray = [];
}
if (!plcontinue) {
plcontinue = '';
}
if (returnArray.length === 0 || plcontinue !== '') {
if (plcontinue !== '') {
url = 'http://en.wikipedia.org/w/api.php?action=query&prop=links&titles=' + title + '&format=json&pllimit=500&plnamespace=0&plcontinue=' + plcontinue + '&callback=?';
}
$.ajax({url: url,
dataType: 'json',
async: false,
success: function(data) {
for (key in data['query']['pages']) {
links = data['query']['pages'][key]['links'];
}
for (var i = 0; i < links.length; i += 1) {
returnArray.push(links[i]['title']);
}
if (data.hasOwnProperty('query-continue')) {
plcontinue = data['query-continue']['links']['plcontinue'];
} else {
plcontinue = '';
}
console.log(returnArray);
return getLinksFrom(title, returnArray, plcontinue);
}
});
}
console.log(returnArray);
return returnArray;
}
この関数を実行してコンソールを見ると、console.log(returnArray); 行は、私が望むものをコンソールに入れます。文字列の配列。しかし、ここで私は混乱します。
その returnArray を、links という変数に格納したいと思います。関数の下にある行は次のとおりです。
var links = getLinksFrom('United States');
しかし、リンクは、以前にログに記録された素晴らしいものと同じになるわけではありません。代わりに、適切な長さではないオブジェクトの配列が含まれています。
ここで何が起こっているのですか?