我正在尝试检查从查询返回的值。此结果为 JSON 格式。我的代码一直有效,直到我的条件语句。
在调试时,我发现我的条件语句总是失败,因为我尝试从 JSON 检索并比较的值始终未定义。
var promise = insertDataInMongo([body, token]);
var newBody = JSON.parse(body);
if (newBody.paging.facebookPost !== -1 || newBody.paging.youtube !== -1 || newBody.paging.twitter !== -1 || newBody.paging.facebook !== -1 || newBody.paging.reddit !== -1 || newBody.paging.youtubeComment !== -1 || newBody.paging.news !== -1)
promise.then(getAthleteMedia([athlete, token, newBody.paging.facebook, newBody.paging.facebookPost, newBody.paging.reddit, newBody.paging.youtube, newBody.paging.youtubeComment, newBody.paging.twitter, newBody.paging.news]))
返回的正文如下所示:
{ "paging": [
{
"youtubeComment": -1
},
{
"youtube": -1
},
{
"twitter": -1
},
{
"facebook": -1
},
{
"reddit": -1
},
{
"facebookPost": -1
},
{
"news": -1
}
]}
当我调试时,我看到以下内容:
JSON Values
但是,解析值显示为:
Parsed values
非常感谢任何帮助。谢谢,
您收到的是对象数组而不是对象的对象,因此您应该首先使用索引然后使用属性来访问它们。假设 JSON 响应的格式始终相同,这是有效的 JSfiddle链接和下面是受此启发的示例代码 How to get index of object by its property in javascript帖子answer .
var newBody = {
"paging": [{
"youtubeComment": -1
}, {
"youtube": -1
}, {
"twitter": -1
}, {
"facebook": -1
}, {
"reddit": -1
}, {
"facebookPost": -1
}, {
"news": -1
}]
};
function check(array, attr, value) {
for (var i = 0; i < array.length; i += 1) {
if (array[i][attr] === value) {
return false;
}
}
return true;
}
function get_value(array, attr) {
for (var i = 0; i < array.length; i += 1) {
if (array[i].hasOwnProperty(attr)) {
return array[i][attr];
}
}
}
if (check(newBody.paging, "facebook", -1) || check(newBody.paging, "youtubeComment", -1) || check(newBody.paging, "youtube", -1) || check(newBody.paging, "twitter", -1) || check(newBody.paging, "reddit", -1) || check(newBody.paging, "facebookPost", -1) || check(newBody.paging, "news", -1)) {
// promise.then(getAthleteMedia([athlete, token, get_value(newBody.paging, "facebook"), ... get_value(newBody.paging, "news")]));
// similarly just pass the function in your promise, hope it clears how to get the values as well
console.log(get_value(newBody.paging, "facebook"));
} else console.log("not in if");
我是一名优秀的程序员,十分优秀!