Javascript遍历JSON关联日期时间与URL生成二维数组问题咨询
你之前分开提取日期、时间、URL数组的方式,没法对应日期和下属多条访问记录的从属关系,所以会出现配对错误的问题,建议直接按行遍历info字段内容,跟踪当前生效的日期来配对数据,实现代码如下:
// 先拿到JSON中的info字段 const rawInfo = yourJsonData[0].info; const resArr = []; // 按换行拆分内容,过滤空行 const lines = rawInfo.split(/\n+/).filter(item => item.trim()); let curDate = ''; let curTime = ''; lines.forEach(line => { // 匹配日期行,更新当前生效日期 const dateReg = /^\d{4}-\d{2}-\d{2}$/; if (dateReg.test(line)) { curDate = line; return; } // 匹配访问时间行,记录当前时间 const timeReg = /^Page visit (\d{2}:\d{2}:\d{2})$/; const timeRes = line.match(timeReg); if (timeRes) { curTime = timeRes[1]; return; } // 匹配URL行,拼接数据存入结果数组 const urlReg = /^ - URL: (\S+)$/; const urlRes = line.match(urlReg); if (urlRes && curDate && curTime) { resArr.push([`${curDate} ${curTime}`, urlRes[1]]); } })
运行后得到的resArr就是你需要的两列二维数组,示例输出如下:
[ ["2021-10-04 09:57:33", "https://www.google.com/"], ["2021-10-04 09:57:50", "https://www.google.com/blah-blah-blah/"], ["2021-10-04 09:56:03", "https://google.com/random-text/blah/"], ["2021-11-04 13:46:03", "https://www.google.com/blah/blah-blah/"] ]
这种方式可以完美适配每个日期下动态数量的访问记录,不管对应多少条URL都可以正确配对。
内容的提问来源于stack exchange,提问作者Majora
相关产品推荐
相关产品推荐

