前回に引き続きDevQuiz。
今回はWeb Gameを見せられる&高速化させたコードを晒してく。
// 色を記憶する連想配列を作成 hash = {} // カードの枚数分だけめくる cards = document.getElementsByTagName("td").length; for(var i = 0; i < cards; i++){ var element = document.getElementById('card'+i); if (element != null) { // カードをめくるためのマウスイベントを設定 var myevent = document.createEvent('MouseEvents'); myevent.initEvent('click', false, true); element.dispatchEvent(myevent); color = element.style.backgroundColor; if(hash[color] == null){ // カードの色が連想配列になければ色をKeyにしてカードidを格納する hash[color] = i; // 1枚目のカードを開いた時点でペアを作れなかったので、 // 次のカードをめくり、色を連想配列に格納せずに次の操作へと移行する var target = document.getElementById('card'+(i+1)); target.dispatchEvent(myevent); }else{ // カードの色が連想配列にあればそのカードを開いてペアを作成する var target = document.getElementById('card'+hash[color]); target.dispatchEvent(myevent); } } }
このコードの変えたら60番台の問題も速攻で終わった。
連想配列バンザイ!