为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在我的列表中创建了 5 个元素?需要创建理货功能。JavaScript

为什么在我的列表中创建了 5 个元素?需要创建理货功能。JavaScript

宝慕林4294392 2023-04-01 16:19:53
主要焦点在 JS 中,“添加约会”功能正在循环,“年”值以包含 5 个元素的列表结束,即使只进行了一个约会。我认为两个额外的是从添加约会功能创建的,另外两个是从并发约会功能创建的。这是一个小组项目,我没有做这个组件,这就是我努力理解和解决这个问题的原因。我试图将 yy 变量推入年份列表,然后创建一个计数函数来列出每年有多少约会。非常感谢任何建议!如果我没有详细说明,请告诉我!:)提前致谢
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超8个赞

问题是您每次都调用 validDate() 进行比较,并且在 validDate 函数内部您正在改变 years 变量。


修复它的方法有多种,但在我看来,第一种也是最基本的方法,我强烈建议,是将 validDate() 的值存储在一个常量中,并与它进行进一步比较。您应该始终尽量避免每次都调用该函数。最好将其结果保存在内存中


你在哪里


            if (validDate() != false) { newAppointment.date = validDate(); }

在 addApointment 函数中,只需执行


const isDateValid = validDate()

然后用 isDataValid 替换所有即将发生的 validDate() (5)


            const isDateValid = validDate()

            if (isDateValid != false) { newAppointment.date = isDateValid; }


and 


            if (isDateValid === null | isDateValid === undefined | validTime() === null | validTime() === undefined | validTime() === false | isDateValid === false | isConcurrentAppointment(newAppointment.date, newAppointment.startTime, newAppointment.endTime) != true) {

                alert('Date or time entry invalid')

            }

当然,我强烈建议您对 validTime 也这样做。


查看完整回答
反对 回复 2023-04-01
?
www说

TA贡献1775条经验 获得超8个赞

您的问题似乎来自函数years内的追加validDate,该函数在代码的其他地方被视为非变异函数。由于每次需要 tha 值时validDate都会在函数内重复调用,因此该行也将被重复调用。您可以将该行移到别处,但更好的解决方案是进行更改,以便它调用一次并存储它们的值,然后对存储的值执行其余操作。但是,您可能还想移动以便仅在约会完全有效时才调用它。addAppointmentyears.push(yy)years.push(yy)addAppointmentvalidDatevalidTimeyears.push(yy)



查看完整回答
反对 回复 2023-04-01
  • 2 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信