2017-11-30 3 views
0

オブジェクトは、私は、オブジェクトのプロパティまたはメソッドをサポートしていない」ということがfreecodecampsアルゴリズムの一つであり、私はエラーを取得しています回文をチェックしています

function palindrome(str) { 
 
    str = str.toLowerCase().replace(' ', ''); 
 
    var copy = str.replace(/\W+/, ''); 
 
     console.log(copy.reverse); 
 
    
 
    if (copy.reverse() == str) { 
 
    console.log("true"); 
 
    return true; 
 
    } else { 
 
    console.log("false"); 
 
    return false; 
 
    } 
 
} 
 

 
palindrome("Hel lo");

のプロパティやメソッド「逆」をサポートしていません。 '逆'"。あなたの答えをありがとう。

+0

ショートバージョン: '関数パリンドローム(STR){VARクリーン= str.toLowerCase()( ''、/ [^-Z]/g)で置き換えます;。 clean === clean.split( '')。reverse()。join( ''); } '。 –

+0

MDNには[Stringメソッドのリスト](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)があります。 '.reverse()'は1つではありませんそのうちの。 – nnnnnn

答えて

0

Array.prototype.reverseを使用すると、配列の内容を突然変異で置き換えることはできますが、文字列では使用できません。それを動作させるには、文字列を配列に分割して逆にして戻すサンプルを参照してください。

function palindrome(str) { 
str = str.toLowerCase().replace(' ', ''); 
var copy = str.replace(/\W+/, ''); 
    if (copy.split("").reverse().join("")==str){ 
    return true; 
} 
    else { 
    return false; 
} 
+1

'reverse()'コールが多すぎるようです。 – fubar

+1

'if-else'文を取り除き、' return copy.split( "")。reverse()。join( "")=== str; 'の代わりに使うこともできます。そして、あなたが解決しようとしているのと同じ問題を引き起こしているので、2番目の 'reverse'を削除してください。 –

+0

あなたは 'コピー 'は必要ありません。 'function palindrome(str){ str = str.toLowerCase()。(/ \ W + /、 '');を置き換えます。 return str.split( '')。reverse()。join( '')=== str; } ' – fubar

0

.reverse()だけstringためアレイないために動作します。

したがって、.splitに最初にreverseにする必要があります。

function palindrome(str) { 
 
    str = str.toLowerCase().replace(' ', ''); 
 
    var copy = str.replace(/\W+/, '').split(''); 
 

 
    if (copy.reverse().join('') == str) { 
 
    console.log("true"); 
 
    return true; 
 
    } else { 
 
    console.log("false"); 
 
    return false; 
 
    } 
 
} 
 

 
palindrome("hel eh");

関連する問題