Обьекты.клонирование, права доступа, поможете?

Что-то не получается вот это, помогите пожалуйста:
1. СоздатьновыйобъектStudentCSпутемклонированияобъектаStudentчерез оператор расширения. Добавить в объект StudentCS поле specialty со значением Computer Science.
2. Создать дополнительно 2 объекта: Courses, который хранит название 3 предметов (названия полей) с оценками (значения полей); Permissions: canView, canEdit, canPrint с логическими значениями. Объединить объект StudentCS с объектами Courses и Permissions через метод assign.
3. Написать функцию, которая вычисляет среднюю успеваемость студента (по 3 предметам).
4. Написать функцию, которая вычисляет количество «включенных» прав доступа (со значениями True)

Написала вот какой-то бред:
let student = {
name: 'Sasha',
age: 46,
surname: 'Belov',
};
let studentCS = {...student};
studentCS.speiality = 'Computer Science';
//alert(studentCS.speciality)
let courses = {
Math: 10,
English: 9,
Sport: 8,
};
let permissions = {
canView: true,
canEdit: false,
canPrint: true
};
StudentCSFull= Object.assign({},studentCS,courses,permissions);
StudentCSFullInf.average = function(obj){
let amount = 0;
let sum = 0;
for(let key in obj){

if ((key.slice(0,6)=='course')){
amount++;
sum += obj[key];
}

return sum/amount;
};
StudentCSFullInf.checkPermission = function(obj){
let keys = [];
let activate = 0;
for (let in obj){

if((key.slice(0,3)=='can')&&(obj[key]==true)){
keys.pysh(key);
activate++;
}
}
return activate;
};
document.write("Score; " + StudentCSFullInf.average(StudentCSFullInf));
document.write("Number of enabled rights : " +StudentCSFullInf.checkPermisson(StudentCS));

// let allInfo = Object.assign({},studentCS,courses,permissions);
// let calculateScores = () =>{
// return Object.values(courses).reduce((sum,item)=> sum + item, 0);
// }
// alert('Средний бал -' + calculateScores()/3);

// let meanScore =(Obj)=>
// { return(Obj.Math+Obj.Eng+Obj.Sport)/3;
// }
// alert(meanScore(allInfo));
// let checkPermis=(Obj)=>
// {let enabled = 0;
// for(let key in Obj)
// {
// if ((key.slice(0,3)=='can')&&(Obj[key]==true)){
// enabled++;
// }

// return enabled;
// }
// alert(checkCou(allInfo));
  • Вопрос задан
  • 72 просмотра
Решения вопроса 2
delphinpro
@delphinpro
frontend developer
const student = {
    name   : 'Sasha',
    age    : 46,
    surname: 'Belov',
  };
  const studentCS = { ...student };
  studentCS.speiality = 'Computer Science';

  const courses = {
    Math   : 10,
    English: 9,
    Sport  : 8,
  };
  const permissions = {
    canView : true,
    canEdit : false,
    canPrint: true,
  };
  Object.assign(studentCS, courses, permissions);
  console.log(studentCS);

  studentCS.average = function () {
    return (this.Math + this.Sport + this.English) / 3;
  };
  studentCS.checkPermission = function () {
    return [
      this.canView,
      this.canEdit,
      this.canPrint,
    ].filter(i => i).length;
  };
  console.log('Score: ' + studentCS.average());
  console.log('Number of enabled rights: ' + studentCS.checkPermission());
Ответ написан
Bavashi
@Bavashi
Не совсем понятно, что именно у вас не получилось. Попробуйте так:
let student = {
  name: 'Sasha',
  age: 46,
  surname: 'Belov',
};

let studentCS = {
  ...student
};

studentCS.speciality = "Computer Science";

let courses = {
  Math: 10,
  English: 9,
  Sport: 8,
};

let permissions = {
  canView: true,
  canEdit: false,
  canPrint: true
};

StudentCSFull = Object.assign(studentCS, courses, permissions);

StudentCSFull.average = function() {
  let amount = 0;
  let sum = 0;

  for (let key in courses) {
    amount++;
    sum += courses[key];
  }

  return sum / amount;
};

StudentCSFull.checkPermission = function() {
  let count = 0;

  for (let key in permissions) {
    if (permissions[key] === true) {
      count++;
    }
  }
  
  return count;
}

console.log(StudentCSFull.average()); // 9
console.log(StudentCSFull.checkPermission()); // 2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы