как комбинировать и переносить объекты в массив класса w / es6 - PullRequest
0 голосов
/ 23 января 2019

необходимо написать класс с методами работы над студентами.Пусть это будет задача 1. Далее мне нужно написать еще один класс, который будет содержать объекты из задачи 1 в массиве.насколько я понял, должно получиться что-то вроде [{name: '' ...}, {name: ''}] Но как правильно написать это, я просто не понимаю или я очень глупый

Можно ли сразу создать массив с объектами или это делается методом?

class Student {
  constructor(fName, lName, birth, marks) {
    this.fName = fName;
    this.lName = lName;
    this.birth = birth;
    this.marks = marks;
    this.attendance = [];

  }
  midAttendance() {
    var count = 0;
    var sum = 0;
    for (var i = 0; i < this.attendance.length; i++) {
      if (this.attendance[i] === 'true') {
        count++;
        sum++;
      } else {
        sum++;
      }
    }
    return count / sum;
  }

  getAge() {
    return new Date().getFullYear() - this.birth;
  }
  midMark() {
    var count = 0;
    var sum = 0;
    for (var i = 0; i < this.marks.length; i++) {
      count++;
      sum += this.marks[i];
    }
    return (sum / count);
  }
  present() {
    if (this.attendance.length < 25) {
      this.attendance.push('true');
    } else {
      alert("full")
    };
  }
  absent() {
    if (this.attendance.length < 25) {
      this.attendance.push('false');
    } else {
      alert("full")
    };
  }
  summary() {
    var mMark = this.midMark();
    var mAttendance = this.midAttendance();
    if (mMark > 90 && mAttendance > 0.9) {
      return "molodec";
    } else if ((mMark > 90 && mAttendance <= 0.9) || (mMark <= 90 && mAttendance > 0.9)) {
      return "norm";
    } else {
      return "rediska";
    }
  }
}

class Students extends Student {
  constructor() {
    super(fName, lName, birth, marks);
  }
  let arr = [];
  getStudents() {

  }
}

let student1 = new Student('alex', 'petrov', '1999', [90, 94, 91, 91, 90]);
let student2 = new Student('vova', 'ivanov', '1994', [2, 3, 4, 3, 5]);

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Это создаст массив объектов учеников и даст вам правильный вывод.

const students = [student1, student2]
0 голосов
/ 23 января 2019

Прежде всего, несколько советов для вас!Студенты не должны продлевать студенческий класс.Этот вид наследия имеет разные цели.Кроме того, я бы переписал методы Стьюдента, чтобы сделать его цель более ясной.

Если вы хотите вернуть массив объектов Стьюдента, я бы порекомендовал вам зациклить / отобразить список учеников, и длязатем каждый из них возвращает отформатированный объект, который передается в массив.

В классе Student вы также можете создать метод, который возвращает этот отформатированный объект, а не просто цикл / отображение, хотя массив студентов выполняетметод и вставка возврата в массив.

0 голосов
/ 23 января 2019

Students не должно расширяться Student. extends используется для определения подкласса, который представляет отношение IS-A. Но список учеников - это не ученик.

Students должен быть полностью независимым классом, например

class Students {
    constructor() {
        this.arr = [];
    }
    addStudent(s) {
        this.arr.push(s);
    }
    removeStudent(s) {
        let index = this.arr.indexOf(s);
        if (index > -1) {
            this.arr.splice(index, 1);
        }
    }
    getStudents() {
        return this.arr.slice(); // make a copy so they can't modify the actual array
    }
}

Тогда вы можете сделать:

let class = new Students;
class.addStudent(student1);
class.addStudent(student2);
console.log(class.getStudents());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...