2016-05-24 14 views
1

Komprimiert diesen Code

function palindrome(str) { 
 
    
 
    str = str.toLowerCase().replace(/\W/g,''); 
 
    var subStr = str.split(""),newStr = '',anotherStr = ''; 
 
    for (var j = 0; j < subStr.length;j++){ 
 
    if(subStr[j] === "_"){continue;}else{anotherStr += subStr[j];}} 
 
    for (var i = subStr.length - 1; i > -1;i--){ 
 
    if(subStr[i] === "_"){continue;}else{newStr += subStr[i];}} 
 
    if (anotherStr === newStr) { 
 
    return true; 
 
    } else { 
 
    return false; 
 
    } 
 
}

Kann mir jemand bitte helfen Sie diesen Code bei der Komprimierung? Es funktionierte gut, aber ich glaube, dass der Block von Codes reduziert werden konnte.

Danke.

Antwort

0

Es gibt etwas, das ein JS-Minifier genannt wird, der JavaScript-Code nimmt und es so komprimiert, um Speicher zu sparen. Sie können diese Seite so zu tun, verwenden: http://javascript-minifier.com/

Und hier ist der Ausgang des Codes komprimiert:

function palindrome(r){r=r.toLowerCase().replace(/\W/g,"");for(var e=r.split(""),n="",o="",t=0;t<e.length;t++)"_"!==e[t]&&(o+=e[t]);for(var a=e.length-1;a>-1;a--)"_"!==e[a]&&(n+=e[a]);return o===n?!0:!1} 
2

Eine einfache for-Schleife, bis die Hälfte der Zeichenfolge tun sollten überprüft haben:

Diese vergleicht zuerst, mit last, second mit vorletzter, ... den ganzen Weg bis zur Mitte der Zeichenkette, in diesem Fall wird die Schleife gestoppt und true zurückgegeben, wenn kein Fehler gefunden wurde. Wenn ein Fehler gefunden wird, wird sofort false zurückgegeben.

function palindrome(val) { 
    // If you only want to compare a-zA-Z0-9: 
    // val = val.replace(/[\W_]/g, ''); 
    for(var i = 0; i < val.length/2; i++) { 
    if (val[i] != val[val.length - 1 - i]) { 
     return false; 
    } 
    } 
    return true; 
}; 

Die Super-naive approch zu bedienen:

function palindrome(val) { 
    val = val.replace(/\W_/g, ''); 
    return val === val.split('').reverse().join(''); 
} 
1

Sie es ohne Schleifen tun. Einfach die Saite umkehren und sie vergleichen.

function palindrome(str) { 
    str = str.toLowerCase().replace(/\W/g,''); 
    reverse = str.split('').reverse().join(''); 
    return str === reverse; 
} 
1

ein Palindrom ist ein Wort, eine Phrase, eine Zahl oder eine andere Sequenz von Zeichen, welche die gleiche vorwärts oder rückwärts liest.

Short Lösung Array.some und Array.reverse Funktionen:

function palindrome(str) { 
    str = str.toLowerCase().replace(/\W/g,''); 
    var forward = str.split(""), backward = forward.concat().reverse(); 

    return !forward.some((v, k) => v !== backward[k]); 
} 

console.log(palindrome("Animal loots foliated detail of stool lamina")); // true 
console.log(palindrome("not palindrome at all")); // false 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some