03. Modules-and-Patterns


0

 66 passing, 47 failing. Някви идеи къде бъркам? Ето ми кода:

function solve() {
  let studentsList = [];
  let cheaterCheck = [];

  var Course = {
    init: function (title, presentations) {
      if (title.match(/^\s|\s$|\s+\s+|./)) {
        throw new Error('');
      } else if (presentations.length === 0) {
        throw new Error('');
      }
    },
    addStudent: function (name) {
      let names = [];
      names = name.split(' ');
      if (typeof name !== 'string') {
        throw new Error('');
      } else if (names.length !== 2) {
        throw new Error('');
      } else if (!((names[0].match(/^[A-Z]+/g) || names[0].match(/^[A-Z]+[a-z]+$/g)) &&
          (names[1].match(/^[A-Z]+/g) || names[1].match(/^[A-Z]+[a-z]+$/g)))) {
        throw new Error('');
      }

      let student = {
        firstname: names[0],
        lastname: names[1],
        score: score | 0
      }
      student.id = studentsList.length + 1;

      studentsList.push(student);
      return this.id;
    },
    getAllStudents: function () {
      return studentsList;
    },
    submitHomework: function (studentID, homeworkID) {
      if (studentID !== Number(studentID) || studentID < 1 || studentID > studentsList[studentsList.length - 1].id) {
        throw new Error('');
      } else if (homeworkID !== Number(homeworkID) || homeworkID < 1 || homeworkID > presentations.length + 1) {
        throw new Error('');
      }

      studentsList[studentID - 1].score += homeworkID;
    },
    pushExamResults: function (results) {
      if (results.studentID !== studentsList[results[0].studentID - 1].id || results.studentID < 1 ||
        results.studentID !== Number(results.studentID) || results.score !== Number(results.score)) {
        throw new Error('');
      } else {
        for (let i = 0; i < studentsList.length; i += 1) {
          if (studentsList[i].id === results.studentID) {
            studentsList[i].score = results.score;
          }
        }
      }

      cheaterCheck.push(results.studentID);
      if (cheaterCheck.length > 1) {
        for (let i = 0; i < cheaterCheck.length; i += 1) {
          if (cheaterCheck[i] === results.studentID) {
            throw new Error('');
          }
        }
      }
    },
    getTopStudents: function () {
      studentsList.sort((a, b) => a.score - b.score);
      if (studentsList.length <= 10) {
        return studentsList;
      } else {
        let top10Students = studentsList.slice(0, 10);
        return top10Students;
      }
    }
  }
  return Course;
}

module.exports = solve;




Отговори



1
На първо четене не виждам как реално инициализираш курса в init. Там имаш само проверки и нищо повече не се случва. Може би трябва да запазиш някъде входните параметри, след като минат проверките и да върнеш инициализирания обект накрая (return this)?

от vasilv (275 точки)