javascript - 如何在for循环中将包含子字符串的值分成单独的数组
问题描述
我可能不会很好地提出这个问题,但我有一个 JSON 数组,我解析它以这种格式提取时间值:
(2020-01-08T20:00:03.492Z)
我想按日期分隔唯一时间。因此,我使用'T'索引处的子字符串在for循环中拆分字符串并创建一个新数组,然后将其过滤为仅包含唯一值,例如:
数组(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]);
}
解决方案
请记住,您的 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)
}
希望这可以帮助。
推荐阅读
- ruby-on-rails - Rails 嵌套路由未按预期工作
- r - 闪亮的应用程序在所有浏览器上关闭,但资源管理器
- kubernetes - Calico:Kubernetes pod 使用集群 IP 无法互相 ping
- c++ - How to move cursor to end of text output after cin.clear() and cin.ignore()?
- node.js - 猫鼬 findByIdAndUpdate
- bash - awk 变量在 bash 中打印为选项
- json - 将 JSON-Patch 转换为 MarkLogic JSON 补丁规范?
- php - 关联数组更改键值
- regex - 查找所有不以 's 结尾的单词(包括缩写词)
- html - 线性渐变背景中的顶部边框半径