JS30 day12 Key Sequence Detection
JS30 day12 - Key Sequence Detection
作業內容
今天的也是有點無聊,在這個網頁中只要打出某串密碼就會在畫面中跑出獨角獸@@

學到什麼
- JS
splice的使用補充 splice 的參數如果是負值的話也可以,比方說我今天想要砍掉倒數第七個項目:
話說 JS 的陣列本身找值卻不能使用負值,只能使用本身陣列長度去找const arr = 'abcdefghijklmnopqrstuvwxyz'.split(''); arr.splice(-7, 1) // ["t"] console.log(arr) // ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "u", "v", "w", "x", "y", "z"]
然後要注意的是,第二個值如果是負的,splice 就取不到值,就不會對陣列改變const arr = 'abcdefghijklmnopqrstuvwxyz'.split(''); console.log(arr[-6]) // undefined console.log(arr[arr.length - 6]) // ["u"]
在今天的例子中,寫成這樣:const arr = 'abcdefghijklmnopqrstuvwxyz'.split(''); arr.splice(-7, -1) // []
其實pressed.splice(-passCode.length - 1, pressed.length - passCode.length)pressed.length - passCode.length這一段數字在陣列長度還不到密碼長度的時候是負數或者 0 ,這時候都不會刪減陣列,但是一但長度夠了之後,每次都會是 1,讓陣列的長度永遠保持密碼長度
參考資料: https://github.com/wesbos/JavaScript30
code 內容: HTML:
<script type="text/javascript" src="https://www.cornify.com/js/cornify.js"></script>
JS:
const arr = 'abcdefghijklmnopqrstuvwxyz'.split('');
const pressed = [];
const passCode = "anthony"
window.addEventListener('keydown', (e) => {
pressed.push(e.key)
pressed.splice(-passCode.length - 1, pressed.length - passCode.length)
if(pressed.join('').includes(passCode)){
cornify_add()
}
})