我可能不会问这个问题,但我有一个JSON数组,我解析它来提取以下格式的时间值:
(2020-01-08T20:00:03.492Z)
我想用日期来区分不同的时间。因此,我在for循环中使用'T‘索引处的substring拆分字符串,并创建一个新数组,然后对其进行过滤,使其只包含如下所示的唯一值:
Array(6) "2020-01-10","2020-01-08","2020-01-07","2020-01-06","2019-12-23","2019-12-17“
我现在想要获取这些值中的每一个,将其与JSON响应的原始输出相关联,以提取包含指定日期的漏洞数量的不同字段'vulnerabilitiesCount‘,并将这些值添加到上面的数组中的每个日期。我不知道如何遍历唯一数组中的每个索引。下面的代码完成了我想要为数组的第一个索引实现的功能。感谢任何提前提供的意见!
let arrTwo = [];
let arrThree = [];
for(var i=0; i<jsonP.length; i++)
{
var jtStr = jsonP[i].time
// for(b in unique){
var j = jtStr.includes(unique[0]);
if(j === true){
arrTwo.push(jtStr);
}
for(var d=0;d<=arrTwo.length;d++){
if(arrTwo[d]==jsonP[i].time){
arrThree.push(jsonP[i].vulnerabilitiesCount);
}
}
// }
}
var sum = 0;
for(f=0;f<=arrThree.length;f++){
sum += parseInt(arrThree[f]);
}发布于 2020-01-15 07:59:51
考虑到您的JSON与我在代码中使用的JSON类似,它应该是这样的:
const data = {
time: ["(2020-01-08T20:00:03.492Z)"],
vulnerabilitiesCount: [1, 2]
}
let timesArray = [];
for(let i = 0; i < data.time.length; i++) {
let formTime = data.time[i].replace("(", "");
formTime = formTime.replace(")", "");
let parsedTime = new Date(formTime);
let month = parsedTime.getMonth()+1;
if(month < 10) {
month = "0" + month;
}
let timeFormatted = parsedTime.getFullYear() + "-" + month + "-" + parsedTime.getDate();
let fullTime = {
time: "",
vulnerabilitiesCount: 0
}
if(timesArray.find(t => t.time == parsedTime)) {
continue;
}
fullTime.time = timeFormatted;
if(data.vulnerabilitiesCount[i] > 0) fullTime.vulnerabilitiesCount = data.vulnerabilitiesCount[i];
timesArray.push(fullTime)
}希望这能有所帮助。
https://stackoverflow.com/questions/59743184
复制相似问题