School catalogue


First thing that comes up is,


should be,


Okay, I see now that averageTestScores is an attribute with a getter. Is this one that I earlier said needed to invoked? Belay that, thanks.

return this._averageTestScores.reduce((a, b) => {a + b}) / this._averageTestScores.length;

The above method is read-only so can use the getter rather than direct access. Rule of getters… If there is one, use it every time to access the property’s value.

return this.averageTestScores.reduce((a, b) => {a + b}) / this.averageTestScores.length;
Use of isNan() in the School Catalogue Project

Great thanks for usefull remarks. However, i’m sorry, any success, completely lost in just three words. Evidently, it is a luck of systematic knowledge. Logically everythings is clear, practically unable to apply it.


What errors are being raised? Does the code function without console errors?


there are lots of (in the new ver):


You have an error in the console which is giving a pretty good indication - you’re calling averageTestScores without first having passed any test scores in it:

line 67: lorraineHan.averageTestScores();

At this stage the array is empty. Push some values into it first.

Then you will find that your averageTestScores function doesn’t work. Remove the curly braces from around a+b in its code. This function would be better as a getter, btw.

I have your code returning results. You’re nearly there.


Given that each extended class has an attribute,

this._averageTestScores = []

We can give them methods, such as,

  get averageTestScores () {
    return this._averageTestScores;
  addTestScore (score) {
  classAverage () { 
    return this.averageTestScores.reduce((a, b) => a + b) / this.averageTestScores.length

There will be no averageTestScores parameter in the constructor. We will need to load them in individually…


Now when we poll the scores and report the average,


We get,

[ 90, 85, 75, 90 ]
1 Like

Hey there, thanks a lot!

1 Like

You’re welcome. There is still work to be done if you ever wish to come back to the project (or continue on, now).

For instance, exam scores to form a database from which to calculate exam class average, term class average, or student averages (an extra feature).

Above, how might we allow a list of scores in one go, rather than one at a time?

Can the attributes and methods be inherited from the parent class? Answer, yes, so there would be one distribution of the codebase. Individual subclasses can override if need be.

So now the School class will carry the load. We add in a property that I called meanTestScores (to lose three letters from the name).

The multiple entries problem I solved by having two methods, rather than a bunch of logic in one.

  get meanTestScores () {
    return this._meanTestScores;
  addTestScore (score) {
  addTestScores (scores) {
  classAverage () { 
    return this.meanTestScores.reduce((a, b) => a + b) / this.meanTestScores.length

Lots ways this project can go.

1 Like

Hi, I apperciate your feedback, it is especially usefull and motivating for me at the moment.

As you probably noticed, I’ve stuck over an elementary things. That’s because I am distracted doing this exercise along with going through learning process of theory materials of this course. It’s important for me at the moment to create a solid base knowledge as far as it possible for beginner to aproach tasks more or less adequately, as well as mixing it up with practice.

I like your idea to go further in this regards, to extend evaluation of tests scores and to improve code in such way, forthermore, initially i had some thoughts of extending this exercise in this way.

I’ll be back in short time, after absorbing portion of general theory , with some proposal of mentioned above code development :slight_smile: .

1 Like

sorry sorry i guess i had not mastered the format thing in the forum…sorry!


may i know why not using statics here?


ok cool, so why level doesn’t need to be included?


No need to apologize ;). Just a little advice for a future post.


Hi, can you have a look at this issue pls.