2017-05-26 1 views
0

質問Javascript Slice:2つのパラメータを使用して文字列の最後の文字を選択できますか?

私は..私はどうなる文字列の最後の文字を取得するためにsliceを使用する場合は

lastCharacter = theString.slice(-1); 

startendの両方で最後の文字を選択することが可能です数値パラメータ?この..

var start = -1; 
var end = -0; // nonsensical, I realize 
lastCharacter = theString.slice(start, end); 

回答

のように特別な-0私は尋ねた理由は、私は、変数を使用することが見ていたある

を尋ね桁

理由はありません私はtheStringの逆になる新しい変数を構築したので、各ループで減少する両方のパラメータのために。 atomrcの答えまでは、私は単純に​​を使用するとは思っていませんでした。最後の文字から始めて、最後の文字で始めるのではなく、最後の文字から戻ってきます(以下の例ではif文が必要ですループ)。それはcodeschools上の3番目の質問のためだった

私の解決策だったjavascriptのテストは、 '文字列が回文かどうか確認してください' アーケード..

function checkPalindrome(inputString) { 
 
    var characterTotal = inputString.length; 
 
    var inputStringStringified = inputString + ''; 
 
    var slicedLetter; 
 
    var sliceStart = -1; 
 
    var sliceEnd = -1; 
 
    var backwards = ''; 
 
    for (i = characterTotal; i > 0; i--) { 
 
    if (i === characterTotal) { // first run 
 
     slicedLetter = inputStringStringified.slice(sliceStart); 
 
     sliceStart = sliceStart - 1; 
 
     backwards = backwards + slicedLetter; 
 
    } else { 
 
     slicedLetter = inputStringStringified.slice(sliceStart, sliceEnd); 
 
     sliceStart = sliceStart - 1; 
 
     sliceEnd = sliceEnd - 1; 
 
     backwards = backwards + slicedLetter; 
 
    } 
 
    } 
 
    if (inputString === backwards) { 
 
    alert('true'); 
 
    } else { 
 
    alert('false'); 
 
    } 
 
} 
 
checkPalindrome('abaaba');

私が作成する必要がありましたif最初の繰り返しの文。 atomrcの答えでは、文字列の長さを知っていたので、スライスに負の数を使う必要はありませんでした。新しい知識を用いて

私の新しいソリューションは少し短い..です..butまだひどいソリューション

function checkPalindrome(theString) { 
 
    var totalCharacters = theString.length; 
 
    var sliceStart = totalCharacters - 1; 
 
    var sliceEnd = totalCharacters; 
 
    var counter = totalCharacters; 
 
    var backwardsString = ''; 
 
    while (counter > 0) { 
 
\t var character = theString.slice(sliceStart, sliceEnd); 
 
\t sliceStart--; 
 
\t sliceEnd--; 
 
\t counter--; 
 
\t backwardsString = backwardsString + character; 
 
    } 
 
    if (theString === backwardsString) { 
 
\t alert('its a palindrome'); 
 
    } else { 
 
\t alert('its not a palindrome'); 
 
    } 
 
} 
 
checkPalindrome('abaaba');

。それを解決した後、私は他の人が思いついたものを見て、シンプルなライナーです。そこ

答えて

0

あなたはそれだけかもしれないので、あなたは、2番目のパラメータは、この場合には必要ではないことを言及することができ:)

theString.slice(theString.length - 1, theString.length) 
+1

行く: 'theString.slice(theString.length - 1)' ' – radiovisual

+0

[末尾位置を= Array.from(theString).reduceRight(c => c) ' –

+0

本当です。私は作者が何を達成しようとしているのかよく分かっていませんが、 'start'と' end'パラメータを持つバージョンを求めました(このようにすべてが明示的で、 'slice'の内部を知る必要はありません。それは...私は推測する) – atomrc

関連する問題