0
问题Javascript Slice:是否可以使用2个参数来选择字符串的最后一个字符?
如果我想使用slice
得到一个字符串的最后一个字符,我会做..
lastCharacter = theString.slice(-1);
是否有可能同时具有start
和end
选择的最后一个字符数值参数?这样的..
var start = -1;
var end = -0; // nonsensical, I realize
lastCharacter = theString.slice(start, end);
答案
有没有特殊-0位
我问
的原因,我问的原因是我一直在寻找使用变量对于这两个参数,这将在每个循环上递减,因为我建立了一个新的变量,这个变量与theString
相反。直到atomrc的答案,我不认为简单地使用并从最后一个字符开始工作,而不是像-1中那样从最后一个字符开始,就像我在下面的例子中所做的那样(这需要if语句用于第一次迭代for循环)。
这是对codeschools第三个问题街机的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');
我不得不创建一个如果声明为第一次迭代。有了atomrc的回答,我现在看到我没有必要使用负数来切片,因为我知道字符串的长度。
有了新的认识我的新的解决方案是一个有点短..
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');
..但仍然是一个可怕的解决方案。解决之后,我看到别人提出了什么,有些简单的一个内衬。
你可以提的是,第二个参数是不是在这种情况下,必要的,所以它可能只是:'theString.slice(theString.length - 1)'' – radiovisual
lastCharacter = Array.from(theString).reduceRight(c => c)' –
的确如此。我不确定作者想要实现什么,但他要求一个带有“start”和“end”参数的版本(这样一切都是明确的,你不需要知道“slice”的内部知道什么它确实......我猜) – atomrc