class BlockOfComments { | |
var id; // just in case | |
var numberOfComments; | |
var comments[]; //array of Comment instances | |
var addComment = function(text, ownerID, parent){ | |
var comment = new Comment(text, ownerID, parent); | |
var indexOfComment = this.comments.indexOf(comment); | |
if (index != -1) { | |
alert("comment already exist"); | |
} else { | |
this.comments.push(comment); | |
} | |
this.numberOfComments = comments.length; | |
} | |
var deleteCommentById = function(commentID) { | |
function findCommentByID(comment){ | |
return comment.id === commentID; | |
} | |
var indexToDelete = this.comments.findIndex(findCommentByID); | |
if(indexToDelete != -1) { | |
this.comments.splice(indexToDelete, 1); | |
} | |
this.numberOfComments = comments.length; | |
} | |
} | |
class Comment { | |
var id; | |
var parentCommentID = null; //may be null (optional type) | |
var ownerID; //userID | |
var text; | |
var numberOfLikes; | |
var likes[]; //array of IDs who like this comment | |
construcor(text, ownerID, parentID) { | |
this.text = text; | |
this.ownerID = ownerID; | |
if parentID { | |
this.parentID = parentID; | |
} | |
} | |
var like = function(userID){ | |
var indexOfUserID = this.likes.indexOf(userID) | |
if (index != -1) { // if user already like this then delete like from arr | |
this.likes.splice(index, 1) | |
} else { // if user not liked before then add like to arr | |
this.likes.push(userID); | |
} | |
this.numberOfLikes = this.likes.length; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Ну общая логика вроде понятна. Класс блока с комментариями, который держит массив инстансов класса комментарий (хорошо бы ещё класс комментатора/пользователя с именем, аватаркой, айдишником etc., но на картинке нет этой инфы, так что я не добавлял). Не понял к чему замечание по поводу "элементы интерактивные и не ведут к перезагрузке страницы". Сеть можно дёргать без перезагрузки. ДОМ перестраивать тоже. Ограничение "на комментарии первого уровня можно отвечать", мне тоже неясно. Ссылка на родителя – и можно отвечать на комментарии любого уровня. Либо это же задание выдавалось кому-то покруче, либо просто лишняя информация. Если нужно сделать именно двухуровневые коменты – просто запретить комментировать комментарии, у которых parentCommentID не null.
И да, считайте, что это псевдокод, а не JS. Я прям чувствую, насколько плохо пахнет ;–)