그들은 당신의 소셜에서 좋아요를 어떻게 계산합니까? 알아보기 위해 JavaScript 함수를 만들어 봅시다
24942 단어 webdevprogrammingjavascriptbeginners
좋아요 수를 조작할 수 있는 나만의 좋아요 버튼이 있다면 어떨까요?
기본 HTML 및 CSS를 알고 있으면 나만의 LIKE 버튼을 만들 수 있습니다.
또한 다음 기본 JavaScript 개념을 알고 있으면 좋아요 수를 조작할 수 있습니다.
1. HTML 만들기
<h2>Let's Manipulate Your Likes-Count</h2>
<h3>Follower List</h3>
<div id="follower-list">
<input type="checkbox" id="friend" value="My Best Friend">
<label for="friend">My Best Friend</label> <br>
<input type="checkbox" id="pet" value="My Pet">
<label for="pet">My Pet</label> <br>
<input type="checkbox" id="neighbour" value="My Neighbour">
<label for="neighbour">My Neighbour</label> <br>
<input type="checkbox" id="teacher" value="My Teacher">
<label for="teacher">My Teacher</label> <br>
<input type="checkbox" id="parents" value="My Parents">
<label for="parent">My Parents</label> <br>
<input type="checkbox" id="boss" value="My Boss">
<label for="boss">My Boss</label> <br>
<input type="checkbox" id="alien" value="An Alien From The Mars">
<label for="alien">An Alien From The Mars</label> <br>
</div>
<h3>Let's Check Who Likes This...?</h3>
<h4>Please Click The Like Button If You Like This...</h4>
<button id="like-btn">Like</button>
<p id="show-likes"></p>
CSS를 사용하여 약간의 맛을 추가하십시오. 그것은 모두 당신에게 달려 있습니다.
2. JavaScript로 생명을 불어넣다
let likeBtn = document.querySelector("#like-btn");
let showLikes = document.querySelector("#show-likes");
let followerList = document
.querySelector("#follower-list")
.querySelectorAll("input[type=checkbox]");
let likes = [];
followerList.forEach((follower) => {
follower.addEventListener("change", function (e) {
likes = Array.from(followerList)
.filter((e) => e.checked)
.map((e) => e.value);
});
});
likeBtn.addEventListener("click", (e) => {
showLikes.innerHTML = countLikes(likes);
console.log(countLikes(likes));
});
function countLikes(likes) {
switch (likes.length) {
case 1:
return `${likes[0]} likes this.`;
case 2:
return `${likes[0]} and ${likes[1]} like this.`;
case 3:
return `${likes[0]}, ${likes[1]} and ${likes[2]} like this.`;
default:
return likes.length > 3
? `${likes[0]}, ${likes[1]} and ${likes.length - 2} others like this.`
: `No one, but only I like this.`;
}
}
3. 좋아요를 계산하는 다른 방법
이제 끝났습니다! 원하는 만큼 가지고 놀 수 있습니다.
하지만 기다려!
여기서는
switch-case
문을 사용하여 좋아요 수를 계산했습니다. 그러나 function countLikes() {}
를 만드는 방법은 수천 가지가 있습니다.좋아요 수를 세는 멋진 방법을 시도해 봅시다.
방법 1:
사용한 개념: 객체, 화살표 함수 및 삼항 연산자
const countLikes = (likes) => {
let format = {
1: `${likes[0]}`,
2: `${likes[0]} and ${likes[1]}`,
3: `${likes[0]}, ${likes[1]} and ${likes[2]}`,
4: `${likes[0]}, ${likes[1]} and ${likes.length - 2} others`
};
let who =
likes.length > 0 ? format[Math.min(likes.length, 4)] : `No one, but only I`;
let likeThis = likes.length === 1 ? ` likes this.` : ` like this.`;
return who + likeThis;
};
방법 2:
사용된 개념: 정규식, String.replace() 및 Array.shift()
function countLikes(likes) {
let format = [
"No one, but only I like this.",
"{name} likes this.",
"{name} and {name} like this.",
"{name}, {name} and {name} like this.",
"{name}, {name} and {n} others like this."
];
let index = Math.min(likes.length, 4);
return format[index].replace(/{name}|{n}/g, function (val) {
return val === "{name}" ? likes.shift() : likes.length;
});
}
방법 3:
사용된 개념: 삼항 연산자 및 Array.shift()
function countLikes(likes) {
let len = likes.length;
if (len <= 1) {
return len === 0
? "No one, but I like this."
: likes.shift() + " likes this.";
} else {
return (
(len < 4
? (len < 3 ? "" : `${likes.shift()}, `) +
`${likes.shift()} and ${likes.shift()}`
: `${likes.shift()}, ${likes.shift()} and ${likes.length} others`) +
" like this."
);
}
}
방법 4:
사용된 개념: 스프레드 연산자 및 정의되지 않음
function countLikes([first, second, ...others]) {
let whoLikesThis;
if (others.length <= 0) {
if (second === undefined) {
if (first === undefined) {
whoLikesThis = `No one, but only I like this.`;
} else {
whoLikesThis = `${first} likes this.`;
}
} else {
whoLikesThis = `${first} and ${second} like this.`;
}
} else {
if (others.length === 1) {
whoLikesThis = `${first}, ${second} and ${others[0]} like this.`;
} else
whoLikesThis = `${first}, ${second} and ${others.length} others like this.`;
}
return whoLikesThis;
}
이제 좋아하는 사람에게서 받은(또는 받고 싶은) 좋아요 수를 알려주세요.
메모:
이 게시물은 Who likes it?이라는 코드워 문제에서 영감을 받았습니다. 그리고 이 문제를 놀랍게 해결한 모든 전사들에게 감사를 전하고 싶습니다.
ko-fi에서 저를 지원할 수 있습니다. 나는 항상 당신의 지원에 감사하며 계속 나아가도록 격려합니다.
행복한 코딩!
이미지 크레디트: Unsplash의 Daria Nepriakhina
Reference
이 문제에 관하여(그들은 당신의 소셜에서 좋아요를 어떻게 계산합니까? 알아보기 위해 JavaScript 함수를 만들어 봅시다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mkday/how-do-they-count-likes-in-your-socials-lets-create-a-javascript-function-to-find-out-1dk2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)