Javascript 在拆分字符串中未定义
我有一个函数可以将字符串分成两部分,前面和后面。然后前后颠倒。这是我的密码Javascript 在拆分字符串中未定义,javascript,Javascript,我有一个函数可以将字符串分成两部分,前面和后面。然后前后颠倒。这是我的密码 function reverseString(string) { let splitString = "" let firstString = "" for(i = 0; i <= string.length/2 - 1; i++) { firstString += string[i] } for(i = strin
function reverseString(string) {
let splitString = ""
let firstString = ""
for(i = 0; i <= string.length/2 - 1; i++) {
firstString += string[i]
}
for(i = string.length/2; i <= string.length; i++) {
splitString += string[i]
}
return splitString + firstString
}
你能帮我一下吗?有什么问题吗。谢谢您可以尝试另一种方法并使用
切片
功能
函数反向限制(字符串)
{
if(string.length<2){返回字符串;}
设stringhallength=string.length/2;
设isLengthOdd=stringHalfLength%1!==0;
如果(isLengthOdd){
返回string.slice(Math.ceil(stringhallength),string.length+1)+string[Math.floor(stringhallength)]+string.slice(0,Math.floor(stringhallength));
}
返回string.slice(stringhallength,string.length+1)+string.slice(0,stringhallength);
}
日志(反向限制(“aaabccc”)=“cccbaaa”);
控制台日志(反向限制(“aab”)=“baa”);
console.log(反向限制(“aaaacccc”)==“ccccaaaaa”);
日志(反向限制(“abcdefghabcdef”)==“habcdefabcdefg”)
反转字符串的更有效方法是拆分字符串,然后使用内置的reverse
javascript函数(反转拆分字符串的元素),然后使用join
函数重新连接元素。。不需要重新发明轮子吗
您可以用速记方式连接函数(.split.reverse.join等),使函数看起来像这样:
function reverseString(string) {
return string.split("").reverse().join("");
}
试试看
函数反向限制(字符串){
返回字符串.split(“”).reverse().join(“”);
}
log(reverseString(“hello”);
日志(反向限制(“aaabbccc”)代码>所需内容的简短版本:
function reverseString(string) {
const splitPosition = Math.ceil(string.length / 2);
return string.substring(splitPosition) + string.substring(0, splitPosition);
}
你问题的关键是中间环节。要实现这一点,您可能需要使用下一轮的Math.floor
console.log(反向限制(“aaabccc”);//“cccbaaa”
console.log(反向限制(“abcdefghabcdef”);//“habcdefg”
另外,请注意前提条件,这样我就不必处理简单的案例
此外,在您的代码中,由于您在最后一个循环中访问了:
string[string.length]
当string.length
为奇数时,您需要更改,string.length/2
不是整数。另一个问题是我说了另一种方式,string[1.5]
应该返回什么?@HereticMonkey它应该返回原始字符串,例如如果“aaabccc”“cccbaaa”它与未定义的无关,但您还需要声明i
。Righ tnow您的代码正沦为我所称的对象,并创建了一个全局I
变量。
function reverseString(string) {
const splitPosition = Math.ceil(string.length / 2);
return string.substring(splitPosition) + string.substring(0, splitPosition);
}
function reverseString (str) {
if (str.length<2) {
return str
}
var half = Math.floor(str.length / 2);
return (str.slice(-half) + (str.length%2?str[half]:"") + str.slice(0,half));
}
reverseString('')
> ""
reverseString('1')
> "1"
reverseString('12')
> "21"
reverseString('123')
> "321"
reverseString('1234')
> "3412"
reverseString('12345')
> "45312"
reverseString("aaabccc")
> "cccbaaa"
reverseString("abcdefghabcdef")
> "habcdefabcdefg"
function reverseString (str) {
if (str.length<2) {
return str
}
var half = Math.floor(str.length / 2);
var firstPart = str.slice(0,half);
var midlePart = str.length % 2 ? str[half] : ""; // we could expand also this
var endPart = str.slice(-half);
return endPart + midlePart + firstPart;
}