请解决我的问题,我要检查一个字符串列表作为回文,如果数组中的任何字符串是回文,那么它应该显示结果为true,结果应该是字符串值而不是布尔值。我曾经尝试了很多次,但没有显示结果;请参阅下面的代码: -
function checkPry()
{
var status = new Array();
var wordList1 = document.getElementById("tk").value;
var wordArray = new Array();
wordArray = wordList1.split(" ");
var alength = wordArray.length;
for(var i=0; i <= alength; i++)
{
var str = wordArray[i];
var chrlength = str.length;
var lw = chrlength - 1;
var chk = "";
for(j=0; j<=chrlength; j++)
{
if(str.charAt(j) != str.charAt((lw - j)))
{
chk = "false";
break;
}
else
{
chk = "true";
}
}
if (chk == "true")
{
status[i] = "true";
}
else if (chk == "false")
{
status[i] = "false"
}
}
var displayStr = status.toString();
document.getElementById("show").innerHTML = displayStr;
}
如果我将输入值设为[dalad radar jaijai rexem]
,则应将结果显示为[true,true,false,false]
,请帮助我;你也可以查看下面的小提琴: -
谢谢!
答案 0 :(得分:4)
您只需要检查反转的内容是否相同
function reverse(s){
return s.split("").reverse().join("");
}
function checkIsPalindrome(arr){
var result=[];
for(var i=0;i<arr.length;i++){
result.push(arr[i]==reverse(arr[i]));
}
return result;
}
答案 1 :(得分:2)
只是为了好玩,这里是@ scrblnrd3的替代版本,它使用正则表达式来反转字符串而不是分割/连接。
function reverse(text) {
return text.replace(/./g, function(c, i, s) { return s[s.length - 1 - i]; });
}
function checkIsPalindrome(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
result.push(arr[i] == reverse(arr[i]));
}
return result;
}