JavaScript 每周的函数练习日

JavaScript Function Exercise Day Of The Week

我需要创建一个接受从 17 的整数的函数。

如果数字小于1或大于7,函数应该returnnull。那么每个数字应该代表星期几。

所以如果我尝试像函数 return Day(1) 这样的东西,它应该给我一个输出 'Sunday',

> Day(2)
⋖ 'Monday'
> Day(3)
⋖ 'Tuesday'

等等...

这是我的方法,但它没有用,我认为我的语法有点粗略,所以我想得到正确的方法:)

const weekDAY = new Array(7);
weekDAY[1] = 'Sunday' ;
weekDAY[2] = 'Monday';
weekDAY[3] = 'Tuesday';
weekDAY[4] = 'Wednesday';
weekDAY[5] = 'Thursday';
weekDAY[6] = 'Friday';
weekDAY[7] = 'Saturday';

function returnDay(x) {
  return (x < 1) || (x > 7) ? null :
  } else {
    let thisDay = weekDAY[x]
    return thisDay;
  }
}

右大括号关闭了您使用 ?运算符。

const weekDAY = new Array(7);
weekDAY[1] = 'Sunday' ;
weekDAY[2] = 'Monday';
weekDAY[3] = 'Tuesday';
weekDAY[4] = 'Wednesday';
weekDAY[5] = 'Thursday';
weekDAY[6] = 'Friday';
weekDAY[7] = 'Saturday';

function returnDay(x) {
    if(x < 1 || x > 7) {
        return null;
    }
    else {
        return weekDAY[x];
    }

作为 ,您的函数应如下所示:

function returnDay(x){
    return x < 1 || x > 7 ? null : weekDAY[x]
}

或者像这样:

function returnDay(x){
  if(x < 1 || x > 7) {
    return null;
  }
  else {
    return weekDAY[x];
  }
}

首先,数组是 zero-based,这意味着第一个索引从 0 开始,因此您的代码应该如下所示

weekDAY[0] = 'Sunday' ; 
weekDAY[1] = 'Monday';
weekDAY[2]= 'Tuesday';
weekDAY[3] = 'Wednesday';
weekDAY[4] = 'Thursday';
weekDAY[5] = 'Friday';
weekDAY[6] = 'Saturday';

或者,您可以通过这样做来减少行数,

weekDay = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']

您要查找的函数可能如下所示

function returnDay(day) {
  if (day > weekDay.length+1 || day < 1) {
    return null
  } else {
    return weekDay[day-1]
  }
}

使用 switch 语句

const dayOfTheWeek = day => {
   if (day < 1 || day > 7) return null

   switch (day) {
    case 1:
      return 'Sunday'
      break
    case 2:
      return 'Monday'
      break
    case 3:
      return 'Tuesday'
      break
    case 4:
      return 'Wednesday'
      break
    case 5:
      return 'Thursday'
      break
    case 6:
      return 'Friday'
      break
    case 7:
      return 'Saturday'
   }
}

console.log(dayOfTheWeek(7))

使用 ternary 运算符

如果您必须在示例中使用您提供的数组,那么您可以这样做:

const weekDAY= new Array(7)
weekDAY[1] = 'Sunday'
weekDAY[2] = 'Monday'
weekDAY[3] = 'Tuesday'
weekDAY[4] = 'Wednesday'
weekDAY[5] = 'Thursday'
weekDAY[6] = 'Friday'
weekDAY[7] = 'Saturday'

const dayOfTheWeek = day => {
  return day < 0 || day > 7 ? null : weekDAY[day]
}


console.log(dayOfTheWeek(3))

条件(三元)运算符

在您的示例中,您似乎误解了“条件(三元)运算符”。例如,让我们将解决方案中使用的语句转换为常规 if/else 语句。

三元运算符:

return day < 0 || day > 7 ? null : weekDAY[day]

常规if/else语句:

if (day < 0 || day > 7) {
  return null
} else {
  return weekDAY[day]
}

语法:

condition ? ifTrue : ifFalse

数组索引在 0

您的数组从 1 开始。这实际上并不意味着您的数组索引为 1。它仍将在 0 处编入索引。如果我们记录 weekDAY 数组,我们将看到:

[
  undefined,
  "Sunday",
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
  "Saturday"
]

如您所见,我们将 0 索引设置为 undefined。在我们的 dayOfTheWeek 函数中,这现在对我们来说不是问题(因为我们不允许 1 以下的整数),但是如果我们决定遍历这个数组,我们将遍历 undefined。稍后这可能会在我们的代码中产生错误。

为避免此问题,您应该尝试以这种方式声明数组:

weekDAY = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']

您正在尝试将 'else' 与三元运算符一起使用。可以使用三元运算符来代替 if-else 块,但是您不能像您一样将三元运算符与 else 块一起使用已在您的解决方案中使用。

此外,数组是基于 0 的。因此,理想情况下,您应该从 0 开始分配。就像我在下面的代码片段中所做的那样。

if-else 块的工作原理:

if(condition){
    // If 'condition' is true this code executes
} else {
    // If 'condition' is not true, this code executes
}

三元运算符的工作原理:

(condition) ? {code when condition is true} : {code when condition is false};

所以你的情况是:

return (x<1) || (x>7) ? null : weekDay[x];

你的整个解决方案是:

const weekDAY= new Array(7);
weekDAY[0] = 'Sunday' ;
weekDAY[1] = 'Monday';
weekDAY[2] = 'Tuesday';
weekDAY[3] = 'Wednesday';
weekDAY[4] = 'Thursday';
weekDAY[5] = 'Friday';
weekDAY[6] = 'Saturday';

function returnDay(x){
  return (x < 1) || (x > 7) ? null : weekDAY[x];
}

//Calling the function for result and printing it to the console
//using console.log()
console.log(returnDay(2));

 // create object to store days of the week
const days = {
  1: "Monday",
  2: "Tuesday",
  3: "Wednesday",
  4: "Thursday",
  5: "Friday",
  6: "Saturday",
  7: "Sunday",
};

// create function
function returnDay(num) {
  return num < 1 || num > 7 ? null : days[num];
}

// call function
console.log(returnDay(3)); // Wednesday
console.log(returnDay(8)); // null
console.log(returnDay(0)); // null

使用条件:

const weekDAY = new Array();
weekDAY[1] = 'Monday' ;
weekDAY[2] = 'Tuesday';
weekDAY[3] = 'Wednesday';
weekDAY[4] = 'Thursday';
weekDAY[5] = 'Friday';
weekDAY[6] = 'Saturday';
weekDAY[7] = 'Sunday';

function returnDay(x){
    if(x < 1 || x > 7) {
        return null;
    }
    else {
        return weekDAY[x];
    }
}

console.log(returnDay(1));
console.log(returnDay(7));
console.log(returnDay(4));
console.log(returnDay(0));

我正在 Udemy 学习并完成了这样的练习:

function returnDay (num) {
    let daysOfWeek = ['not a day','Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
    return num < 1 || num > 7 ? null : daysOfWeek[num]; 
}
const days = {
    1:"Monday",
    2:"Tuesday",
    3:"Wednesday",
    4:"Thursday",
    5:"Friday",
    6:"Saturday",
    7:"Sunday"
 }

const dayNum = Object.values(days);

function returnDay(a) {
    if(a < 1 || a > 7) {
        return null;
    } else {
        return dayNum[a - 1];
    }
}