Jordis Burns
Jordis Burns

Reputation: 3

How do I add increment to two specific properties of a class?

Here are my instructions, I am having issues with getting two properties 'numberOfLikes' and 'comments' to use increment to adjust the amount of likes and comments. I don't know if I should use a for loop or if I just need the increment operator. I'm new to coding and apologize in advance.

/* In the space below, add to the existing skeleton of a Tweet class.

Create several instances of your Tweet and log them to the console. Make sure the tweet object instances behave as expected. */

class Tweet {
    constructor(author, content, timeStamp, numberOfLikes, comments) {
      this.author = author;
      this.content = content;
      this.timeStamp = timeStamp;
      this.numberOfLikes = numberOfLikes;
      this.comments = comments;
 }
};


//This is code I was playing around with, doesn't work

this.add = function(numberOfLikes){
  for(i = 0; i < numberOfLikes.length; i++){
    console.log("You have " + numberOfLikes + " likes");
  }
}

this.add = function(comments) {
  for(i = 0; i < comments.length; i++) {
    console.log("You have " + comments + " comments");
  }
}



var tweet1 = new Tweet("Rihanna", "Fenty Beauty", "12:31 A.M.", 120193, 6782);

Thanks in advance!

Upvotes: 0

Views: 82

Answers (4)

fabian
fabian

Reputation: 158

Within the class body you need to define prototypal functions like this:

class Tweet {
  constructor(author, content, timeStamp, numberOfLikes, comments) {
    this.author = author;
    this.content = content;
    this.timeStamp = timeStamp;
    this.numberOfLikes = numberOfLikes;
    this.comments = comments;
  }
  like() {
    this.numberOfLikes++;
  }
  comment(comment) {
    this.comments.push(comment);
  }
}

const tweet1 = new Tweet("Rihanna", "Fenty Beauty", "12:31 A.M.", 120193, ["I hate I hate know-it-alls"]);

console.log(tweet1.numberOfLikes);
tweet1.like();
tweet1.like();
console.log(tweet1.numberOfLikes);
console.log(tweet1.comments);
tweet1.comment("I love you Rihanna!!")
console.log(tweet1.comments);
.as-console-wrapper { min-height: 100%!important; top: 0; }

Upvotes: 0

user1922718
user1922718

Reputation: 147

This should work. You need to put the function definitions inside the class definition. I also modified the function names, because they conflict with each other.

class Tweet {
    constructor(author, content, timeStamp, numberOfLikes, comments) {
      this.author = author;
      this.content = content;
      this.timeStamp = timeStamp;
      this.numberOfLikes = numberOfLikes;
      this.comments = comments;
 }

  addLikes(numberOfLikes){
    this.numberOfLikes += numberOfLikes
  }

    addComments(comments) {
      this.comments += comments
  }
};


// Initial tweet instance
var tweet1 = new Tweet("Rihanna", "Fenty Beauty", "12:31 A.M.", 120193, 6782);

// Call modifiers
tweet1.addLikes(5)
tweet1.addComments(7)

// Check the variables were modified
console.log(tweet1.numberOfLikes)
console.log(tweet1.comments)

Upvotes: 0

lejlun
lejlun

Reputation: 4419

You can create functions that use += and array#push to increment numbers and add values to arrays.

Incrementing tweets:

incrementLikes(increment = 1) {
  this.numberOfLikes += increment
}

Adding a comment to the array:

addComment(comment) {
  this.comments.push(comment)
}

I also noticed that in your post you mentioned that this.comments was a list. So I made that change when initializing the class.

new Tweet("Rihanna", "Fenty Beauty", "12:31 A.M.", 120193, ["amazing", "wow"]);

Demo:

class Tweet {
  constructor(author, content, timeStamp, numberOfLikes, comments) {
    this.author = author;
    this.content = content;
    this.timeStamp = timeStamp;
    this.numberOfLikes = numberOfLikes;
    this.comments = comments;
  }
  
  incrementLikes(increment = 1) {
    this.numberOfLikes += increment
  }
  
  addComment(comment) {
    this.comments.push(comment)
  }
};

var tweet1 = new Tweet("Rihanna", "Fenty Beauty", "12:31 A.M.", 120193, ["amazing", "wow"]);

tweet1.incrementLikes()
console.log(tweet1.numberOfLikes)

tweet1.incrementLikes()
console.log(tweet1.numberOfLikes)

tweet1.addComment("This is a comment")
console.log(tweet1.comments)

Upvotes: 1

Amirhossein Shahbazi
Amirhossein Shahbazi

Reputation: 1111

A tweet should be able to increment the numberOfLikes

This should be a function to increase the numberOfLikes.

and add to the list of comments.

comments is probably an array. This means that you need a function to add a comment, to the list of your comments.

class Tweet {
    constructor(author, content, timeStamp, numberOfLikes, comments) {
        this.author = author;
        this.content = content;
        this.timeStamp = timeStamp;
        this.numberOfLikes = numberOfLikes;
        this.comments = comments;
    }
    increaseNumberOfLikes() {
        this.numberOfLikes++
    }
    addComment(commentText) {
        this.comments.push(commentText)
    }
};

let tweet1 = new Tweet("The Weekend", "Some content", "15:31 P.M.", 9800, ["so cool", "do it again"])
tweet1.increaseNumberOfLikes()
tweet1.addComment("Great Song!")

console.log(tweet1)

You should create more tweets like above.

Upvotes: 1

Related Questions