ठीक है तो मैं jQuery के साथ एचटीएमएल, सीएसएस और जावास्क्रिप्ट के साथ एक जल्लाद परियोजना कर रहा हूँ।

मैं क्या करता हूं यह स्ट्रिंग को इस तरह अंडरस्कोर में परिवर्तित करता है

var hidden_word;

hidden_word = aWord.replace(/[a-z]/gi, ' _ ');
$("#word").html(hidden_word);

और फिर बाद में यदि किसी अक्षर पर क्लिक किया जाता है तो उसे सही अक्षर के साथ उपयुक्त अंडरस्कोर को बदलना चाहिए।

मैंने इसके साथ यही किया है (यह काम नहीं करता है क्योंकि यह सिर्फ इसे वापस परिवर्तित करता है)

if(aWord.includes(guess)){
    for(var q=0; q<aWord.length; q++){
        if (aWord[q] == guess){ indices.push(q+1); counter++; 
            $("#word").html(aWord.replace(/Q/g, ' Q '));
        }
        
        console.log(counter);
    }

मैंने कुछ शोध किया है लेकिन वास्तव में कुछ भी नहीं मिला।

कोई भी विचार, इसे कैसे बनाया जाए ताकि यह उस अक्षर को परिवर्तित कर दे, जिस पर अक्षर हैं?

0
Tortoise41 18 अक्टूबर 2020, 22:13

1 उत्तर

सबसे बढ़िया उत्तर

एक सरल उपाय aWord के अक्षरों को मैप करना है जहां aWord एक स्ट्रिंग abc के बराबर है, जैसे किसी ऑब्जेक्ट के लिए। {a: "_", b: "_", c: "_"}, फिर आप उस ऑब्जेक्ट के माध्यम से पुनरावृति कर सकते हैं प्रत्येक प्रकार का उपयोगकर्ता कुछ टाइप करता है, फिर उसके मान लौटाता है, वापसी से पहले आप जांच सकते हैं कि ऑब्जेक्ट में उपयोगकर्ता द्वारा टाइप किया गया अक्षर है, तो आप ऑब्जेक्ट के मान को अपडेट कर सकते हैं या तो वर्तमान मान सेट कर सकते हैं एक ही कुंजी के साथ, इसलिए जब आप फिर से यूआई लौटाएंगे तो इस बार सही परिणाम आएंगे, आइए एक उदाहरण दें:

const aWord = "abcdef"; // generated based on your logic
const mappings = {}; // initial empty object

aWord.split('').forEach((_, i) => mappings[aWord[i]] = '_'); // fill in the object with letters as keys and underscores as values by default

const guess = "f"; // coming from user

if (aWord.includes(guess)){ // if word has guessed letter, we update object
    mappings[guess] = guess;
}

// mappings now will be => {a: "_", b: "_", c: "_", d: "_", e: "_", f: "f"}
console.log(mappings);
0
Yassine Belkaid 18 अक्टूबर 2020, 20:15