【发布时间】:2016-08-10 05:00:20
【问题描述】:
我是 JavaScript 新手。我正在编写一个函数来检查是否可以通过最多一对字符的交换从中获得回文。我遇到的一个问题是我的对象在警报中看起来是正确的,但无论我使用什么运算符,它都被评估为假。我附上了小提琴
我做错了什么?
function isOneSwapEnough() {
inputString = 'aabaa'
var inputStringArray = inputString.split();
if (isPalandrome(inputStringArray))
{
return true;
}
//if we made it this far then the string is not a palendrone yet.
var newCharArray;
for (var j =0; j<inputStringArray.length; j++)
{
newCharArray = inputStringArray;
for (var k =0; k<inputStringArray.length; k++)
{
var tempChar = inputStringArray[j];
newCharArray[j] = newCharArray[k];
newCharArray[k] = tempChar;
if (isPalandrome(newCharArray))
{
return true;
}
}
}
return false;
}
function isPalandrome(testString)
{
var firstcheck = [];
// already a char array... var testStringArray = testString.split();
//check if already a palendrone
for (var i =0; i<testString.length; i++)
{
firstcheck[testString.length-(i+1)] = testString[i];
//console.log(testString[i]);
//console.log(firstcheck[testString.length-i]);
}
//console.log(testString);
//console.log(firstcheck);
//alert("1: " + typeof testString);
//alert("2: " + typeof firstcheck);
alert("condition " + firstcheck.valueOf() === testString.valueOf())
if ( firstcheck.valueOf() == testString.valueOf())
{
return true;
}
}
【问题讨论】:
-
只是让你知道,
'aabaa'.split() //=> ['aabaa']不是['a', 'a', 'b', 'a', 'a'],就像你可能期待的那样。如果是这样的话,你可能想试试.split('') -
您的回文是否允许使用空格、逗号或其他特殊字符?
-
alert("condition " + firstcheck.valueOf() === testString.valueOf())行将始终返回 false。它将"condition"与firstCheck.valueOf()连接起来,并将其与testString.valueOf()进行比较,testString.valueOf()始终为false。
标签: javascript arrays string character