计算嵌套数组中的相同数据不起作用
Count the same data in nested array not working
我正在尝试计算一组用户中具有特定 ID 的用户出现的次数。
用户数组作为键“数据”的值存储在字典中
代码输出 1 而不是预期的 5。
代码:
var dlsapi = {
url: 'https://api.discordlist.space/v2/bots/814580247973986314/upvotes',
headers: {'content-type': 'application/json', authorization: process.env.DLS}
};
const discordlistspace = await axios.request(dlsapi);
try {
let dlscount = 0;
discordlistspace.forEach(item => {
if (item.data[0].user.id === "221838936866029568") {
dlscount++;
}
});
console.log(dlscount);
}
catch (error) {
console.error(error);
}
这是代码中 API 请求的 JSON(数组)输出(api 请求工作正常):
{
"page": 1,
"count": 5,
"countPerPage": 16,
"pageCount": 1,
"sortBy": "timestamp",
"sortDirection": "descending",
"data": [{
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628505406447,
"id": "aef767acc68303735326b2b99a0750c704d5e64a206282bd37b94a9682aa3027"
}, {
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628393803968,
"id": "3a96b21c7469db31eeb86d2371cb0d63fc5404e79afb09a738224ebcaf8aaba4"
}, {
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628176604500,
"id": "36721763e54280554765bcd614a1e32945ff6f269fb3df3c7e3f8a4be921bcf8"
}, {
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628096627173,
"id": "e4a7112bd50b4e1f097e792ae29a1b28ca516a11e4a0c041a88015401ac6a439"
}, {
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628018492326,
"id": "160ba20531ca87e43730fa3a671914bd08b0c6c5486a8604f6401279d88803b8"
}]
}
我认为你在错误的对象上循环。您想检查数据列表中每个用户的 ID。
也许尝试这样的事情
var dlsapi = {
url: 'https://api.discordlist.space/v2/bots/814580247973986314/upvotes',
headers: {'content-type': 'application/json', authorization: process.env.DLS}
};
try {
let dlscount = 0;
discordlistspace.data.data.forEach(item => {
if (item.user.id === "221838936866029568") {
dlscount++;
}
});
console.log(dlscount);
} catch (error) {
console.error(error);
}
编辑:如果你想要更短的代码,你可以像这样替换整个 try 块:
var dlsapi = {
url: 'https://api.discordlist.space/v2/bots/814580247973986314/upvotes',
headers: {'content-type': 'application/json', authorization: process.env.DLS}
};
try {
let dlscount = discordListspace.data.data.filter(item => item.user.id == "221838936866029568").length;
console.log(dlscount);
} catch (error) {
console.error(error);
}
filter是一种数组过滤方法(顾名思义)数组:只保留满足特定条件的元素
因此您可以过滤数组以仅包含具有 id 的用户,然后检查结果 length
请试试这个。
JsonObj.data.forEach(item => {
if (item.user.id === '221838936866029568') dlscount++;});
产量 5
我正在尝试计算一组用户中具有特定 ID 的用户出现的次数。 用户数组作为键“数据”的值存储在字典中 代码输出 1 而不是预期的 5。 代码:
var dlsapi = {
url: 'https://api.discordlist.space/v2/bots/814580247973986314/upvotes',
headers: {'content-type': 'application/json', authorization: process.env.DLS}
};
const discordlistspace = await axios.request(dlsapi);
try {
let dlscount = 0;
discordlistspace.forEach(item => {
if (item.data[0].user.id === "221838936866029568") {
dlscount++;
}
});
console.log(dlscount);
}
catch (error) {
console.error(error);
}
这是代码中 API 请求的 JSON(数组)输出(api 请求工作正常):
{
"page": 1,
"count": 5,
"countPerPage": 16,
"pageCount": 1,
"sortBy": "timestamp",
"sortDirection": "descending",
"data": [{
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628505406447,
"id": "aef767acc68303735326b2b99a0750c704d5e64a206282bd37b94a9682aa3027"
}, {
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628393803968,
"id": "3a96b21c7469db31eeb86d2371cb0d63fc5404e79afb09a738224ebcaf8aaba4"
}, {
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628176604500,
"id": "36721763e54280554765bcd614a1e32945ff6f269fb3df3c7e3f8a4be921bcf8"
}, {
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628096627173,
"id": "e4a7112bd50b4e1f097e792ae29a1b28ca516a11e4a0c041a88015401ac6a439"
}, {
"user": {
"username": "Mashwishi",
"discriminator": "0001",
"avatar": "a_42fd57bfe236a51d71dfde5e113143bb",
"shortDescription": "",
"banned": null,
"admin": false,
"donator": false,
"createdAt": 1625175650578,
"updatedAt": 1628435735580,
"id": "221838936866029568"
},
"timestamp": 1628018492326,
"id": "160ba20531ca87e43730fa3a671914bd08b0c6c5486a8604f6401279d88803b8"
}]
}
我认为你在错误的对象上循环。您想检查数据列表中每个用户的 ID。 也许尝试这样的事情
var dlsapi = {
url: 'https://api.discordlist.space/v2/bots/814580247973986314/upvotes',
headers: {'content-type': 'application/json', authorization: process.env.DLS}
};
try {
let dlscount = 0;
discordlistspace.data.data.forEach(item => {
if (item.user.id === "221838936866029568") {
dlscount++;
}
});
console.log(dlscount);
} catch (error) {
console.error(error);
}
编辑:如果你想要更短的代码,你可以像这样替换整个 try 块:
var dlsapi = {
url: 'https://api.discordlist.space/v2/bots/814580247973986314/upvotes',
headers: {'content-type': 'application/json', authorization: process.env.DLS}
};
try {
let dlscount = discordListspace.data.data.filter(item => item.user.id == "221838936866029568").length;
console.log(dlscount);
} catch (error) {
console.error(error);
}
filter是一种数组过滤方法(顾名思义)数组:只保留满足特定条件的元素 因此您可以过滤数组以仅包含具有 id 的用户,然后检查结果 length
请试试这个。
JsonObj.data.forEach(item => {
if (item.user.id === '221838936866029568') dlscount++;});
产量 5