gpt4 book ai didi

javascript - JS : Using i as an Index of a String in a Loop Is Returning an Integer, 不是字母

转载 作者:行者123 更新时间:2023-11-28 17:32:12 25 4
gpt4 key购买 nike

学习 JS/编程并进行一些基本练习。

这个是判断一个单词是否是回文(向前读和向后读一样)。

我的问题是,即使我输入回文,该函数也会返回false。从单步查看来看,string[i] 似乎给出了一个要比较的整数,而不是当前索引处的字符。

let input = "hannah";
let firstCharacter = input[0];
let lastIndex = input.length -1;
let lastCharacter = input[lastIndex];


function palTest(string) {
let j = string[lastIndex];
if (string.length % 2 === 0 )
{
for (i = 0; i <= string.length / 2; i++) {
if (string[i] === string[j]) {
j--;
return true;
} else {
return false;
}
}
} else {
let middleCharacter = (string.length + 1) / 2;
for (i = 0; i <= ((string.length + 1) / 2) - 1; i++) {
if (string[i] === string[j] && middleCharacter == "a" || "e" || "i" || "o" || "u" ) {
j--;
return true;
} else {
return false;
}
}
}
}

let x = palTest(input);
console.log(x); // false
console.log(input[0]); // h
console.log(input[1]); // a
console.log(input[2]); // n
console.log(input[3]); // n
console.log(input[4]); // a
console.log(input[5]); // h

在第一个循环的 for 循环中,我认为 hannah[i]0 而不是 "h ":所以它将 0"h" (hannah[j]) 进行比较并返回 false?

最佳答案

您需要递减lastIndex而不是最后一个索引处的值

function palTest(string) {
var lastIndex = string.length - 1; //initialize lastIndex here
let j = string[lastIndex];
if (string.length % 2 === 0) {
for (i = 0; i <= string.length / 2; i++) {
if (string[i] === string[lastIndex]) { //compare with lastIndex
lastIndex--; //decrement last index
return true;
} else {
return false;
}
}
} else {
let middleCharacter = (string.length + 1) / 2;
for (i = 0; i <= ((string.length + 1) / 2) - 1; i++) {
if (string[i] === string[lastIndex] && middleCharacter == "a" || "e" || "i" || "o" || "u") {
lastIndex--;
return true;
} else {
return false;
}
}
}
}

console.log( palTest("hannah") );
console.log( palTest("hantnah") );
console.log( palTest("Not a palindrome") );

一种不太冗长的方法可能是

var input = "hannah";
var fnCheckPal = ( input ) => input == input.split( "" ).reverse().join("");

演示

var fnCheckPal = (input) => input == input.split("").reverse().join("");

console.log( fnCheckPal( "hannah" ) );
console.log( fnCheckPal( "hantnah" ) );
console.log( fnCheckPal( "hann33ah" ) );

关于javascript - JS : Using i as an Index of a String in a Loop Is Returning an Integer, 不是字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50060103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com