Javascript生成JSON对象时无法正确输出NULL值的问题求解
问题根因
当没有匹配到符合条件的重叠交易线时,isOverLap仍为初始值false,openDate也保持初始的null。此时执行openDate = new Date(openDate)会生成1970年1月1日的日期对象,用这个日期和当前时间计算间隔月份,就会得到600+的错误数值,这就是你输出不符合预期的原因。
修复方案
不需要新增else if分支,只需要在计算月份、给time_for_overlap_months字段赋值前,先判断是否存在重叠交易线即可:如果存在重叠,再计算间隔月份;如果不存在重叠,直接给字段赋值null即可。同时还要同步调整minimum_two_years_overlapping字段的赋值逻辑,避免无重叠时出现错误结果。
你可以把原有代码中字段赋值的部分替换为以下内容:
//diff is the conversion for opendate to today's date. It converts milliseconds to months jsonOutput["overlapping_tradelines"] = isOverLap; const now = Date.now(); let months = null; minimum_two_years_overlapping = false; // 仅存在重叠交易线时计算月份 if (isOverLap) { openDate = new Date(openDate); let diff = now - openDate; diff = diff / (30 * 24 * 60 * 60 * 1000); months = Math.floor(diff); // 原逻辑写的diff == 24,只有刚好满24个月才会返回true,正常判断满2年可改为>=,你可按需调整 minimum_two_years_overlapping = diff >= 24; } jsonOutput["time_for_overlap_months"] = months; jsonOutput["minimum_two_years_overlapping"] = minimum_two_years_overlapping; let version = "08.23.21"; jsonOutput["version"] = version; console.log(jsonOutput);
内容的提问来源于stack exchange,提问作者Angelo G. Vazquez
相关产品推荐
相关产品推荐

