the length of the added character is not checked in the alphabet if(str.length == 1 ){...} (only one character must be added) and the for(var i=1; i<w2.length-1; i++){ if(term.indexOf(w2.charAt(i))== -1){ not performed for(var i=1; i<w2.length-1; i++){ if(term.indexOf(w2.charAt(i))== -1){ and for(var i=0; i<w2.length-2; i++){ if(term.indexOf(w2.charAt(i))== -1){ . Those. the same added string must pass the check. 1) all characters of the string, except the first, correspond to the elements of the term array. 2) all characters of the string, except the last, correspond to the elements of the term array.

 var terminal = ['a', 'b', 'c']; var term=document.getElementById('terminal').innerHTML = terminal; var noterminal = ['D', 'A', 'Z', 'L']; var noterm = document.getElementById('noterminal').innerHTML = noterminal; function pushTerminal(){ var x = document.getElementById('newTerminal'); var str = term.indexOf(document.getElementById("inputAdd").value); var str2 = noterm.indexOf(document.getElementById("inputAdd").value); if(str.length == 1 ){ if(str == -1 && str2== -1) { term.push(document.getElementById("inputAdd").value); x.innerHTML = term.join(); }else{ alert("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΡƒΠΆΠ΅ сущСствуСт"); } }else{ alert("НСобходимо ввСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ символ!"); } } var changeStringFromRules = []; var changeStringToRules = []; function pushRules(){ var w1 = document.getElementById("inputw1").value; var w2 = document.getElementById("inputw2").value; var firstIn = term.indexOf(w2.charAt(0)) != -1; var lastIn = term.indexOf(w2.charAt(w2.length-1)) !=-1; var checkLettersTerm = true; var typeGrammar; for(var i=1; i<w2.length - 2; i++){ if(term.indexOf(w2.charAt(i))==-1){ innerIn = false; break; } } if(w1.length == 1){ if(innerIn && firstIn != lastIn){ if(innerIn && firstIn){ typeGrammar = 'Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° Ρ‚ΠΈΠΏΠ° 3'; }else if(innerIn && lastIn){ typeGrammar = 'Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° Ρ‚ΠΈΠΏΠ° 3'; } else{ typeGrammar = 'Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° КБ'; } }else if(w1.length!=1 && term.indexOf(w1.charAt(0))!=-1 || noterm.indexOf(w1.charAt(0))!=-1) { typeGrammar = 'Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠšΠ—'; } } // if(w1.length == 1 && noterm.indexOf(w1)!=-1){ // if(noterm.indexOf(w2.charAt(0))!=-1 ){ // for(var i=1; i<w2.length-1; i++){ // if(term.indexOf(w2.charAt(i))== -1){ // checkLettersTerm = false; // typeGrammar = 'Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° Ρ‚ΠΈΠΏΠ° 3'; // alert('Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° Ρ‚ΠΈΠΏΠ° 3'); // console.log('w2', w2); // } // } // // }else if(noterm.indexOf(w2.charAt(w2.length-1))!=-1){ // for(var i=0; i<w2.length-2; i++){ // if(term.indexOf(w2.charAt(i))== -1){ // checkLettersTerm = false; // typeGrammar = 'Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° Ρ‚ΠΈΠΏΠ° 3'; // alert('Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° Ρ‚ΠΈΠΏΠ° 3'); // // } // } // } else { // typeGrammar = 'Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° КБ'; // alert('ΠšΠΎΠ½Ρ‚Π΅ΡΡ‚Π½ΠΎ-свободная'); // } // }else if(w1.length!=1 && term.indexOf(w1.charAt(0))!=-1 || noterm.indexOf(w1.charAt(0))!=-1){ // typeGrammar = 'Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠšΠ—'; // alert('ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½ΠΎ-зависимая'); // } var li = document.createElement("li"); li.textContent = w1+'-->'+w2 +' '+ typeGrammar; document.getElementById('list').appendChild(li); var removeBtn = document.createElement("input"); removeBtn.type = "button"; removeBtn.value = "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ"; removeBtn.onclick = remove; li.appendChild(removeBtn); document.getElementById("list").appendChild(li); } function remove(e) { var el = e.target; el.parentNode.remove(); } 
 <div class="alphabet"> <div class="terminal"> <h2>Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Ρ„Π°Π²ΠΈΡ‚: </h2> <div id="terminal"></div> <h2>Новый Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Ρ„Π°Π²ΠΈΡ‚: </h2> <div id="newTerminal"></div> <div class="addTerminal"> <h3>Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°</h3> <form> <input id ="inputAdd" type="text"> <input type="button" value="Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ" onclick="pushTerminal()"> </form> </div> </div> <div class="noterminal"> <h2>ΠΠ΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Ρ„Π°Π²ΠΈΡ‚: </h2> <div id="noterminal"></div> </div> </div> <div class="addRules"> <h3>Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ</h3> <form> <label>w1:</label><input id="inputw1" type="text"><label> --> w2:</label><input id="inputw2" type="text"> <input type="button" value="Add" onclick="pushRules(this)"> </form> <h3>ΠŸΡ€Π°Π²ΠΈΠ»Π°:</h3> <div class="container_rules"> <ul id="list"></ul> </div> </div> 

    1 answer 1

     var arr = ['D', 'A', 'Z', 'L']; //var arr = document.getElementById('array').innerHTML = arr; if(arr.indexOf(w2.charAt(0))!=-1 || arr.indexOf(w2.charAt(w2.length-1))!=-1){ var allInArray2 = true; for (var i = 1; i < w2.length - 1; i++) } if (array2.indexOf(w2.charAt(i)) == -1) { allInArray2 = false; break; } } } 

    Update

    Let's try again.

     function strangeCheck(array, str) { var firstIn = array.indexOf(str.charAt(0)) != -1; var lastIn = array.indexOf(str.charAt(str.length - 1)) != -1; var innerIn = true; for (var i = 1; i < str.length - 2; i++) { if (array.indexOf(str.charAt(i)) == -1) { innerIn = false; break; } } //console.log(firstIn, innerIn, lastIn); if (innerIn && firstIn != lastIn) { if (innerIn && firstIn) { // всС символы строки, ΠΊΡ€ΠΎΠΌΠ΅ послСднСго ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ элСмСнтам массива term return "all but the last"; } if (innerIn && lastIn) { // всС символы строки, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ элСмСнтам массива term return "all but the first"; } } return "none of the two good cases"; } var chars = ['a','b','v','c']; console.log(strangeCheck(chars, 'abZav')); console.log(strangeCheck(chars, 'ZALD')); console.log(strangeCheck(chars, 'cab')); console.log(strangeCheck(chars, 'Zcav')); console.log(strangeCheck(chars, 'acbD')); 

    • Hmm, what if a different register? - user207618
    • @Other hmm, there's nothing in the register question. - Igor
    • 2
      Yes, you just do not see the future :) - user207618
    • @vita_run "other elements" - the remaining characters of the string, that is, each of them, or the entire remaining piece of string, as a whole? You do not moan to use more words :). - Igor
    • and if you need to check the remaining characters to belong to another array? if (array.indexOf (w2.charAt (0))! = - 1) {if (array2.indexOf (w2.substring (1, length))! = - 1) {alert ('ok')} else {alert ('error');} - vita_run