2016-05-24 5 views
1

このコードを圧縮

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; 
 
    } 
 
}

誰かがこのコードを圧縮するには私を助けてくださいことはできますか? うまくいきましたが、コードブロックを減らすことができると思います。

ありがとうございました。

答えて

0

JavaScriptコードを取り、それを圧縮してメモリを節約するJSミニファイアと呼ばれるものがあります。あなたはそうするためにこのサイトを使用することができます。http://javascript-minifier.com/

そしてここでは、あなたのコードの出力は圧縮される。

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

ループのための簡単なあなたは半分の文字列が何をすべきチェックしてまで:

これは、最初と最後と2番目と最後の2番目と2番目と最後とを比較します。文字列の中央に達するまで、ループを停止し、エラーがなければtrueを返します。エラーが見つかった場合は、すぐにfalseを返します。

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; 
}; 

スーパーナイーブapprochが使用することです:

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

あなたはどのループせずにそれを行うことができます。文字列を逆にして比較するだけです。

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

パリンドロームは単語、句、番号、または同じ後方または前方を読み取り 文字の他の配列です。

Array.someArray.reverse機能を使用してショートソリューション:

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