123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- const studentsArr = [{
- name: 'Сергей',
- surname: 'Войлов',
- ratingPoint: 1000,
- schoolPoint: 1000,
- course: 2,
- },
- {
- name: 'Татьяна',
- surname: 'Коваленко',
- ratingPoint: 880,
- schoolPoint: 700,
- course: 1,
- },
- {
- name: 'Анна',
- surname: 'Кугир',
- ratingPoint: 1430,
- schoolPoint: 1200,
- course: 3,
- },
- {
- name: 'Станислав',
- surname: 'Щелоков',
- ratingPoint: 1130,
- schoolPoint: 1060,
- course: 2,
- },
- {
- name: 'Денис',
- surname: 'Хрущ',
- ratingPoint: 1000,
- schoolPoint: 990,
- course: 4,
- },
- {
- name: 'Татьяна',
- surname: 'Капустник',
- ratingPoint: 650,
- schoolPoint: 500,
- course: 3,
- },
- {
- name: 'Максим',
- surname: 'Меженский',
- ratingPoint: 990,
- schoolPoint: 1100,
- course: 1,
- },
- {
- name: 'Денис',
- surname: 'Марченко',
- ratingPoint: 570,
- schoolPoint: 1300,
- course: 4,
- },
- {
- name: 'Антон',
- surname: 'Завадский',
- ratingPoint: 1090,
- schoolPoint: 1010,
- course: 3
- },
- {
- name: 'Игорь',
- surname: 'Куштым',
- ratingPoint: 870,
- schoolPoint: 790,
- course: 1,
- },
- {
- name: 'Инна',
- surname: 'Скакунова',
- ratingPoint: 1560,
- schoolPoint: 200,
- course: 2,
- },
- ];
- const budgetLimit = 5;
- const allowRating = 800;
- let id = 1;
- class CreateStudent {
- constructor(student) {
- CreateStudent.id.call(this)
-
- this.name = student.name;
- this.surname = student.surname;
- this.ratingPoint = student.ratingPoint;
- this.schoolPoint = student.schoolPoint;
- this.isSelfPayment = (student.ratingPoint >= allowRating ) ? student.isSelfPayment = false : student.isSelfPayment = true;
- this.course = student.course;
- }
- static id = function() { return this.id = id++;};
- getTypeOfStudy() {if(this.isSelfPayment === false) {
- return `бюджет`
- }
- return `контракт`
- }
- getFullInfo() {return `Я - ${this.name} ${this.surname}, рейтинговый балл - ${this.ratingPoint}, форма обучения - ${this.getTypeOfStudy()}`};
- getRankedPlace() {
- const index = fullListStudents.findIndex((stud) => stud.id == this.id)
- return index + 1;
- }
-
- };
-
- let contract = [];
- const setAllCreatedStudentsByConstructor = arrOfStudents => {
- arrOfStudents = studentsArr.map((student) => new CreateStudent(student));
- arrOfStudents.sort(function(currentStudent, nextStudent) {return nextStudent.ratingPoint - currentStudent.ratingPoint || nextStudent.schoolPoint - currentStudent.schoolPoint});
- arrOfStudents.map(function(student, index) {
- if(index >= budgetLimit) {
- student.isSelfPayment = true;
- if (student.isSelfPayment === true) {
- contract.push(student)
- }
- }
- })
- budget = arrOfStudents.filter(student => student.isSelfPayment === false)
- fullListStudents = [...budget,...contract].sort(function(currentStudent, nextStudent) {return nextStudent.ratingPoint - currentStudent.ratingPoint || nextStudent.schoolPoint - currentStudent.schoolPoint});
- }
- setAllCreatedStudentsByConstructor(studentsArr)
- console.log(budget)
- console.log(contract)
- console.log(fullListStudents)
- console.log(contract[3].getFullInfo())
- console.log(fullListStudents[2].getRankedPlace())
-
- class Intern extends CreateStudent {
- constructor(companyName) {
- super(companyName);
- this.companyName = companyName = 'Google';
- }
- getFullInternInfo() {return `Я - ${this.name} ${this.surname}, рейтинговый балл - ${this.ratingPoint}, форма обучения - ${this.getTypeOfStudy()}, интерн в компании ${this.companyName}`};
- }
- interns = fullListStudents.map((companyName) => new Intern(companyName, 'Google'))
-
- console.log(interns[3].getFullInternInfo())
|