💡 특정 키들을 순서대로 입력하면 발생하는 이스터에그를 구현해보자!
window.addEventListener("keyup", (e) => {
console.log(e.key);
});
const pressedArr = [];
window.addEventListener("keyup", (e) => {
console.log("key:", e.key);
pressedArr.push(e.key);
console.log("pressed key array:", pressedArr);
});
const pressedArr = [];
const secretCode = "sub";
window.addEventListener("keyup", (e) => {
pressed.push(e.key);
console.log(
"배열자르기 전",
"codeL",
secretCode.length,
"arrL",
pressed.length
);
pressed.splice(0, pressed.length - secretCode.length);
if (pressed.join("").includes(secretCode)) {
console.log("DING DING!");
// cornify_add()는 wesbos가 넣어둔 랜덤 유니콘 이미지 추가 함수
cornify_add();
}
console.log(pressed);
console.log(
"배열자른 후",
"codeL",
secretCode.length,
"arrL",
pressed.length
);
console.log("");
});
우선 목표 키 조합 secretCode
를 미리 상수로 선언해주자.
splice()
메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다.
start
는 배열의 변경을 시작할 인덱스로
deleteCount
는 배열에서 제거할 요소의 수로
deleteCount
를 생략하거나 값이 array.length - start
보다 크면 start
부터의 모든 요소를 제거deleteCount
가 0 이하라면 어떤 요소도 제거X.item1, item2, ...
는 배열에 추가할 요소로
splice()
는 요소를 제거하기만 한다.여기서 start
는 배열 맨 앞의 키를 제거할 것이므로 0으로 두고
deleteCount
는 배열의 길이(arrL)가 secretCode
의 길이(codeL)보다 커졌을 때만 맨 앞 키 1개를 제거하도록
pressedArr.length - secretCode.length
로 둔다.
(arrL이 3보다 커진 순간 배열 맨앞 키를 제거해 arrL을 3으로 유지한다.)
이 후 array.join(’’)
으로 배열의 모든 요소를 연결해 만든 하나의 문자열이 secretCode
를 포함하면 이스터에그가 발동한다!
const pressed = [];
const secretCode = "crusub";
window.addEventListener("keyup", (e) => {
pressed.push(e.key);
pressed.splice(0, pressed.length - secretCode.length);
if (pressed.join("").includes(secretCode)) {
console.log("DING DING!");
cornify_add();
}
});