Как создать несколько объектов через один конструктор? JavaScript

84
05 марта 2022, 12:20
function Students(name, course, avgmark){
    this.name = name;
    this.course = course;
    this.avgmark = avgmark;
}
let students = new Students("Vasya", 3, 3.9)

Попробую объяснить, что мне нужно, на данном примере я создаю 1 объект, в который передаю 3 параметра, а как сделать так, чтобы я мог создать список, чтобы на выходе было

Vasya, 3, 3.9
Kolya, 2, 4.1
Masha, 4, 4.2 и тд.

Если я неправильно описал или неправильно написал код, вот само задание "Определить новый объект с именем «Students», который можно создать с помощью «new», используя его конструктор. Конструктор принимает один параметр в виде строки - это список студентов и их курс и средний балл: «Вася», 3, 3,9; "Коля", 2, 4.1; «Маша», 4, 4.2; и тд. Объект «Students» должен иметь следующие методы:(с методами я попробую сам разобраться, просто они должны быть, а пока не могу правильно загуглить этот вопрос(( )

Answer 1

function Student(name, course, avgmark){ 
    this.name = name; 
    this.course = course; 
    this.avgmark = avgmark; 
} 
 
let students = [ 
  new Student("Vasya", 3, 3.9), 
  new Student("Kolya", 2, 4.1), 
  new Student("Masha", 4, 4.2) 
]; 
console.log(students);

Answer 2

function Student(str) { 
   [this.name, this.course, this.average_mark] = str.split(",") 
 } 
  
 function Students(str) { 
   this.list = []; 
     
   str.split(";").forEach(row => { 
     this.list.push(new Student(row)); 
   }); 
 } 
 
 var students = new Students("Вася, 3, 3.9; Коля, 2, 4.1; Маша, 4, 4.2") 
 console.log(students.list)

если правильно Вас понял, то что-то такое получается

Answer 3

function Students(data) { 
  this._data = data.split(/\s*;\s*/).reduce((rslt, studentData) => { 
    const [name, course, avgmark] = studentData.split(/\s*,\s*/);  
    return Object.assign(rslt, { [name]: { course, avgmark } });  
  }, {});  
};  
 
Students.prototype.get = function (studentName) { 
  return this._data[studentName];  
};  
Students.prototype.set = function (studentName, { course, avgmark }) { 
  const studentData = this._data[studentName] || { course, avgmark };  
  this._data[studentName] = { 
    course : course  || studentData.course,  
    avgmark: avgmark || studentData.avgmark,  
  };  
  return this;  
};  
 
const students = new Students('Вася, 3, 3.9; Коля, 2, 4.1; Маша, 4, 4.2');  
console.log('Коля:', students.get('Коля'));  
console.log('Коля переведен на третий курс:', 
  students.set('Коля', { course: '3' }).get('Коля') 
); 

READ ALSO
Преобразование типизированного объекта в TypeScript

Преобразование типизированного объекта в TypeScript

Подскажите, пожалуйста, как в TypeScript obj преобразовать в newObj?

88
Как создать Map с двумя Map внутри?

Как создать Map с двумя Map внутри?

Вытаскиваю данные с биржи, сначала торговую пару, а потом к ней несколько данных по таймфреймамТо есть

101
Остановить таймер с помощью checknet js

Остановить таймер с помощью checknet js

У меня проблема Я создаю онлайн-тестЯ проверяю, что интернет был отключен с помощью плагина jquery checknet

101
Вывод информации из json используя ajax

Вывод информации из json используя ajax

Используя api стороннего сервиса я отправляю информацию наших заказовНа этом сервисе у заказов 3 статуса: новые, активные и завершенные

98