我对jQuery和Javascript相对较新,我正在尝试使用从API接收的信息创建一个对象。该对象应该为数组users
中的每个用户保存一个基本信息对象。为此,我为每个用户进行API调用,然后将json传递给应该创建其属性的构造函数。但是,当我运行代码时,对象只有一个name属性。并且只针对第一个用户,而不是所有用户。
有人能告诉我我做错了什么吗?
以下是代码:
$(document).ready(function () {
var url = "https://wind-bow.gomix.me/twitch-api/streams/";
var users = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
var streamersObj = {};
for(var i = 0; i < users.length; i++) {
console.log(users[i]);
connectToApi(users[i]);
}
function StreamerObjCreate (jsonObj, name) {
streamersObj[name] = name;
streamersObj[name].onStream = jsonObj.stream;
streamersObj[name].channel = jsonObj._links.channel;
streamersObj[name].stream = jsonObj._links.self;
console.log(streamersObj);
}
function connectToApi (target) {
url = url + target + "?" + "callback=?";
$.getJSON(url, function (json) {
StreamerObjCreate(json, target);
});
}
console.log(streamersObj);
});
我刚开始学习,所以如果您有任何相关或无关的反馈,我们将不胜感激。
答案 0 :(得分:1)
您正在创建一个字符串,然后为该字符串分配属性。尝试:
function StreamerObjCreate (jsonObj, name) {
streamersObj[name] = {
name: jsonObj.name,
onStream: jsonObj.stream,
channel: jsonObj._links.channel,
stream: jsonObj._links.self
}
console.log(streamersObj);
}
答案 1 :(得分:0)
您似乎每次都在connectToApi函数中覆盖url变量。试试这个
function connectToApi (target) {
var targetUrl = url + target + "?" + "callback=?";
$.getJSON(targetUrl, function (json) {
StreamerObjCreate(json, target);
});
}