无法从 JSON api 检索特定元素
Unable to retrieve specific elements from JSON api
实现一个 fetchDataForUser 函数,它从远程 JSON api 获取数据,然后 return 作为它的一部分。
由于这是一个网络调用,它需要是一个异步函数,并且 return 通过回调获取数据。
应使用两个参数调用回调:
- 错误:如果请求返回错误,将其传递给此回调。否则将其设置为 null
- data:如果没有错误,这应该是代表给定用户名输赢的对象。如果有错误,这个应该设置为null。
*/
const fetchDataForUser = function (url, username, callback) {
request(url, (err, res, body) => {
if (err) {
callback(err, null);
}
const data = JSON.parse(body);
for (let key in data) {
console.log(data[key]);
if (data[key] === username){
return key
}
callback(null, data);
});
};
它 return 是来自 json 文件的正确数据列表:
用户:{mr_robot:{赢:5,输:2},teddy_b:{赢:0,输:3}}
但我需要在输入用户名时检索特定元素:例如“Mr Robot”
+ "losses": 2
+ "wins": 5
测试驱动代码
fetchDataForUser(url, 'mr_robot')
您可以在没有 for 循环的情况下执行此操作。
在我下面的示例中,真正重要的行是用户数据:
let userdata = (data["users"][username]) ? data["users"][username]: [];
基本上它会查看用户名是否存在于数据中,如果存在,则 returns 该用户的数据,如果不存在,则 returns 一个空数组。
let data = {
"users": {
"mr_robot": {
"wins": 5,
"losses": 2
},
"teddy_b": {
"wins": 0,
"losses": 3
}
}
};
let username = "mr_robot";
let userdata = (data["users"][username]) ? data["users"][username]: [];
console.log(userdata)
实现一个 fetchDataForUser 函数,它从远程 JSON api 获取数据,然后 return 作为它的一部分。
由于这是一个网络调用,它需要是一个异步函数,并且 return 通过回调获取数据。
应使用两个参数调用回调:
- 错误:如果请求返回错误,将其传递给此回调。否则将其设置为 null
- data:如果没有错误,这应该是代表给定用户名输赢的对象。如果有错误,这个应该设置为null。
*/
const fetchDataForUser = function (url, username, callback) {
request(url, (err, res, body) => {
if (err) {
callback(err, null);
}
const data = JSON.parse(body);
for (let key in data) {
console.log(data[key]);
if (data[key] === username){
return key
}
callback(null, data);
});
};
它 return 是来自 json 文件的正确数据列表: 用户:{mr_robot:{赢:5,输:2},teddy_b:{赢:0,输:3}}
但我需要在输入用户名时检索特定元素:例如“Mr Robot”
+ "losses": 2
+ "wins": 5
测试驱动代码
fetchDataForUser(url, 'mr_robot')
您可以在没有 for 循环的情况下执行此操作。
在我下面的示例中,真正重要的行是用户数据:
let userdata = (data["users"][username]) ? data["users"][username]: [];
基本上它会查看用户名是否存在于数据中,如果存在,则 returns 该用户的数据,如果不存在,则 returns 一个空数组。
let data = {
"users": {
"mr_robot": {
"wins": 5,
"losses": 2
},
"teddy_b": {
"wins": 0,
"losses": 3
}
}
};
let username = "mr_robot";
let userdata = (data["users"][username]) ? data["users"][username]: [];
console.log(userdata)