当我调用此函数时,发送例如:abc作为参数, 函数返回:undefinedcba。我无法弄清楚它为什么会添加 'undefined'到我的返回值。我可能忽略了一些显而易见的事情 但我无法发现它。谢谢。
function FirstReverse(str) {
var str_arr1 = new Array();
var ans = '';
for(i=0; i < str.length; i++) {
str_arr1.push(str.charAt(i));
}
for(j=str.length; j >= 0; j--) {
ans += str_arr1[j];
}
return ans;
}
答案 0 :(得分:9)
字符串是0索引的。 str[str.length]
不存在。
j
需要从str.length - 1
开始。
或者,只是return str_arr1.join();
答案 1 :(得分:1)
字符串的索引从0开始,因此string.length
总是比字符串中最后一个字符的索引大一个数字。
在第二个for循环中,使用
for(var j=str.length -1; j >= 0; j--) {
答案 2 :(得分:0)
错误发生在第二个for
语句中。请参阅解决方案:
function FirstReverse(str) {
var str_arr1 = new Array();
var ans = '';
for(i=0; i < str.length; i++) {
str_arr1.push(str.charAt(i));
}
for(j=str.length-1; j >= 0; j--) {
ans += str_arr1[j];
}
return ans;
}
答案 3 :(得分:0)
因为当你传递'abc'时,它只有3个字符。
所以arrray str_arr
在索引0,1和2处有元素。
但是您正在循环str.length
,即3次,str_arr[3]
未定义。
你应该这样做,
function FirstReverse(str) {
var str_arr1 = new Array();
var ans = '';
for(i=0; i < str.length; i++) {
str_arr1.push(str.charAt(i));
}
for(j=str.length-1; j >= 0; j--) {
ans += str_arr1[j];
}
return ans;
}
答案 4 :(得分:0)
看起来你想要反转一个字符串,你可以在这个javascript one liner
中做function reverse(s){
return s.split("").reverse().join("");
}
您获得未定义的原因是因为j
以str.length
开头,而str.length-1. str_arr1[str.length]
应该是{{1}}超出范围,因此将是未定义的。