📌  相关文章
📜  网络技术问题 | JavaScript 课程测验 1 |问题 4(1)

📅  最后修改于: 2023-12-03 15:27:40.092000             🧑  作者: Mango

JavaScript Course Quiz 1 | Problem 4

本问题考察对 JavaScript 中对象和函数的理解。

问题描述

假设有一个 person 对象,它有如下属性和方法:

const person = {
  name: 'Jack',
  age: 25,
  lightSleepHours: 7,
  deepSleepHours: 3,
  sleep: function (hours) {
    this.lightSleepHours += hours * 0.8;
    this.deepSleepHours += hours * 0.2;
  }
};

请编写一个函数 getSleepQuality,它的参数是一个 person 对象,返回该人睡眠质量的评级。评级规则如下:

  • 睡眠总时间少于 7 小时的,评级为不合格(Poor)。
  • 睡眠总时间在 7 到 8 小时之间,且深度睡眠比例低于 30%,评级为一般(Average)。
  • 睡眠总时间在 7 到 8 小时之间,且深度睡眠比例在 30% 到 50% 之间,评级为良好(Good)。
  • 睡眠总时间在 7 到 8 小时之间,且深度睡眠比例高于 50%,评级为优秀(Excellent)。
  • 睡眠总时间超过 8 小时的,评级为良好(Good)。
关键代码

我们可以使用下面的代码来实现该函数:

function getSleepQuality(person) {
  const totalSleepHours = person.lightSleepHours + person.deepSleepHours;

  if (totalSleepHours < 7) {
    return 'Poor';
  } else if (totalSleepHours >= 7 && totalSleepHours <= 8) {
    const deepSleepRatio = person.deepSleepHours / totalSleepHours;
    if (deepSleepRatio < 0.3) {
      return 'Average';
    } else if (deepSleepRatio >= 0.3 && deepSleepRatio <= 0.5) {
      return 'Good';
    } else {
      return 'Excellent';
    }
  } else {
    return 'Good';
  }
}
测试

我们可以使用下面的代码对该函数进行测试:

const person1 = {
  name: 'Tom',
  age: 28,
  lightSleepHours: 6,
  deepSleepHours: 2
};

const person2 = {
  name: 'Alice',
  age: 31,
  lightSleepHours: 5,
  deepSleepHours: 4
};

const person3 = {
  name: 'Bob',
  age: 24,
  lightSleepHours: 7,
  deepSleepHours: 3
};

console.log(getSleepQuality(person1)); // Poor
console.log(getSleepQuality(person2)); // Average
console.log(getSleepQuality(person3)); // Excellent
总结

本问题考察了 JavaScript 中对象和函数相关知识,同时也考察了我们的逻辑思维能力。掌握这些知识和技能,有助于我们更好地进行 JavaScript 开发。