JS技术问题:如何在showData函数中每秒展示布尔值首次为false的时间
解决思路:只捕获并展示首次出现false的时间
嘿,我完全懂你的问题——你现在的代码每次检测到value: false都会重新获取当前时间,所以每秒展示的时间都不一样。要实现只记录第一次出现false的时间并持续复用,核心就是用一个持久变量来标记是否已经捕获过首次时间,只在第一次触发时记录,之后就不再更新。
具体实现步骤
- 声明一个外部变量(或者用闭包保存)来存储首次false的时间,初始值设为
null(表示还没捕获到)。 - 在
showData函数中,遍历数组时:- 仅当遇到
value: false且首次时间未被记录时,才保存当前时间。 - 后续无论数组中是否还有新的false,都只展示这个已记录的首次时间。
- 仅当遇到
代码示例
// 持久存储首次出现false的时间,初始为null表示未捕获 let firstFalseOccurrenceTime = null; function showData(array) { // 遍历数组检查每个元素 array.forEach(item => { // 仅在首次遇到false且未记录时间时,保存当前时间 if (!item.value && firstFalseOccurrenceTime === null) { // 这里可以根据需求选择时间格式:toLocaleTimeString()是可读性高的本地时间,或者用Date.now()存时间戳 firstFalseOccurrenceTime = new Date().toLocaleTimeString(); } }); // 展示逻辑 if (firstFalseOccurrenceTime) { console.log(`首次出现false的时间:${firstFalseOccurrenceTime}`); } else { console.log("当前数组中还没有出现false值"); } } // 模拟每秒调用showData的场景 setInterval(() => { // 替换成你的实际数组 const yourDataArray = [ { value: true }, { value: false }, // 假设这是第一次出现的false { value: true }, { value: false } // 后续的false不会触发时间更新 ]; showData(yourDataArray); }, 1000);
额外扩展:重置首次时间
如果之后需要重新捕获新的首次false时间(比如数组状态重置后),可以加一个重置函数:
function resetFirstFalseTime() { firstFalseOccurrenceTime = null; } // 当需要重置时调用:resetFirstFalseTime();
这样修改后,你就能固定展示第一次遇到false的时间,不会再每次都更新啦。
内容的提问来源于stack exchange,提问作者Ras
相关产品推荐
相关产品推荐

