【问题标题】:JavaScript Array interview question; couldn't find the bugJavaScript 数组面试题;找不到错误
【发布时间】:2021-12-05 20:06:48
【问题描述】:

我的一位朋友在现场采访中被问及以下问题,并有 4 分钟时间回答。

问题: 在不打开任何其他浏览器或使用代码编辑器的情况下,分析下面的代码并给出您的判断是否正确并且可以继续,如果不正确,请调试代码并解释您的答案。

const weekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];

for (let i = 0; i < weekDays.length; i++){
    if (i === 'Wednesday'){
        console.log('Today is Wednesday, join board meeting by 10:00am');
        continue;
    }
    if (i === 'Saturday'){
        console.log("Today is Saturday, weekend is great!");
        break;
    }
    console.log(weekDays[i]);
}

【问题讨论】:

  • 什么被认为是“正确且可行的”
  • @Spectric,正如我所提到的,这个问题是一个实时会话,只是代码在浏览器中实时,而面试的人给出了指示并提出了问题,正如我的朋友解释的那样,他给了我面试后的问题。

标签: javascript arrays loops iteration


【解决方案1】:
for (let i = 0; i < weekDays.length; i++){
    if (i === 3){
        console.log('Today is Wednesday, join board meeting by 10:00am');
        continue;
    }
    if (i === 6){
        console.log("Today is Saturday, weekend is great!");
        break;
    }
    console.log(weekDays[i]);
}

说明: 第 2 行 => (i === 'Wednesday') 和第 6 行 => (i === 'Saturday') 存在错误。 第 2 行中的“星期三”应更改为 3,而第 6 行中的“星期六”应更改为 6。

原因:数组通过索引(例如 1、2、3...)而不是值的名称来循环遍历其值。所以数组,通过循环不理解“星期三”和“星期六”,但它的索引分别是 3 和 6。

【讨论】:

  • dv,不是我,如果日子顺序颠倒,或者一周的起始日不同,例如 星期一,该怎么办?
【解决方案2】:

我知道您提供了自己的答案,但是可以轻松地进一步清理此代码以减少错误:

for (let i = 0; i < weekDays.length; i++) {
    if (i === 3) {
        console.log('Today is Wednesday, join board meeting by 10:00am');
    } else if (i === 6) {
        console.log("Today is Saturday, weekend is great!");
    } else {
        console.log(weekDays[i]);
    }
}

仍然不喜欢神奇的数字。也许i === Day.WednesdayweekDays[i] === Day.Wednesday 取决于预期会发生什么变化。

【讨论】:

    【解决方案3】:

    只需要一个for ... of statement,因为数组可能有不同的顺序或开始的日子。

    对于真正好的代码,使用语义名称day 而不是i

    const weekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    
    for (const i of weekDays) {
        if (i === 'Wednesday') {
            console.log('Today is Wednesday, join board meeting by 10:00am');
            continue;
        }
        if (i === 'Saturday') {
            console.log("Today is Saturday, weekend is great!");
            break;
        }
        console.log(i);
    }

    【讨论】:

      猜你喜欢
      • 2014-05-25
      • 2012-12-29
      • 1970-01-01
      • 2021-11-12
      • 2018-01-12
      • 1970-01-01
      • 2016-04-07
      • 2015-07-04
      • 1970-01-01
      相关资源
      最近更新 更多