【问题标题】:Javascript - What is wrong with this function and loop?Javascript - 这个函数和循环有什么问题?
【发布时间】:2017-01-09 22:09:35
【问题描述】:

我几天前才开始学习编码,我的第一个程序也差不多完成了。但是,我现在最后遇到了一个问题,我自己似乎无法弄清楚出了什么问题。

该程序应该帮助我按工作日和一天中的时间对一堆日期进行排序。日期写成“YYMMDD-”,然后是一天中的时间(只有小时),例如“170109-06”。

我有我想要在一个数组中排序的所有日期(时间),下面的函数和循环应该删除所有与特定年份不匹配的日期。

变量说明:

time - 由日期和时间组成的数组(所有月份相同但年份不同。(例如 ["161102-03", "151127-11"]

yearDate - 将保留在数组中的日期的前 4 个数字。

function checkDate (date) {
    var yearMonth = date.slice(0, 4);
    var index = time.indexOf(date)
    if (yearMonth != yearDate) {
        time.splice(index, index + 1);
    } 
    else {
    }
}

for (var i = 0; i <= time.length; i++) {
    checkDate(time[i]);
}

这段代码似乎偶尔会起作用,但有时数组中的一些字符串在应该被删除时仍然保留在那里,因此代码显然有问题。

我希望你能明白我的意思。我确实意识到这篇文章最终有点毛骨悚然。

【问题讨论】:

标签: javascript arrays function loops for-loop


【解决方案1】:

标准错误。您在迭代数组时从数组中删除项目。每次删除一个项目时,递增迭代器将使您跳过与已删除项目相邻的下一个元素。

往回走:

for (var i = time.length - 1; i >= 0; i--) {
    checkDate(time[i]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多