当一个字符串被传递给一个带有返回语句的函数时,你如何在JavaScript中反转它,而不使用内置函数(.reverse(), . charat()等)?
当前回答
你不能,因为JS字符串是不可变的。短的非就地解决方案
[...str].reverse().join``
let str = "Hello World!"; Let r =[…str].reverse().join ' '; console.log (r);
其他回答
String.prototype.reverse_string=function() {return this.split("").reverse().join("");}
or
String.prototype.reverse_string = function() {
var s = "";
var i = this.length;
while (i>0) {
s += this.substring(i-1,i);
i--;
}
return s;
}
另一个变体(它在IE中工作吗?):
String.prototype.reverse = function() {
for (i=1,s=""; i<=this.length; s+=this.substr(-i++,1)) {}
return s;
}
编辑:
这是不使用内置函数的:
String.prototype.reverse = function() {
for (i=this[-1],s=""; i>=0; s+=this[i--]) {}
return s;
}
注意:this[-1]保存字符串的长度。
然而,不可能将字符串反向,因为赋值给 单个数组元素不能与String对象(protected?)一起工作。也就是说,你可以赋值,但结果字符串不会改变。
下面的内容可能会帮助任何希望递归反转字符串的人。在最近的一次面试中,我被要求使用函数式编程风格:
var reverseStr = function(str) {
return (str.length > 0) ? str[str.length - 1] + reverseStr(str.substr(0, str.length - 1)) : '';
};
//tests
console.log(reverseStr('setab retsam')); //master bates
好的,很简单,你可以创建一个简单的循环函数来为你反向字符串,而不需要使用reverse(), charAt()等,就像这样:
例如,你有这样一个字符串:
var name = "StackOverflow";
创建一个这样的函数,我称之为reverseString…
function reverseString(str) {
if(!str.trim() || 'string' !== typeof str) {
return;
}
let l=str.length, s='';
while(l > 0) {
l--;
s+= str[l];
}
return s;
}
你可以这样称呼它:
reverseString(name);
结果是:
"wolfrevOkcatS"
function reverse(str){
var s = "";
for (var i = str.length - 1; i >= 0; i--){
s += str[i];
}
return s;
};
reverse("your string comes here")