当一个字符串被传递给一个带有返回语句的函数时,你如何在JavaScript中反转它,而不使用内置函数(.reverse(), . charat()等)?
当前回答
添加到String原型是理想的(只是以防它被添加到核心JS语言中),但你首先需要检查它是否存在,如果不存在就添加它,如下所示:
String.prototype.reverse = String.prototype.reverse || function () {
return this.split('').reverse().join('');
};
其他回答
在JavaScript中有许多方法可以反转字符串。我正在记下我喜欢的三种方法。
方法一:使用反向函数:
function reverse(str) {
return str.split('').reverse().join('');
}
方法2:循环字符:
function reverse(str) {
let reversed = '';
for (let character of str) {
reversed = character + reversed;
}
return reversed;
}
方法3:使用reduce函数:
function reverse(str) {
return str.split('').reduce((rev, char) => char + rev, '');
}
我希望这对你有所帮助:)
var reverseString = function(str){
let length = str.length - 1;
str = str.split('');
for(let i=0;i<= length;i++){
str[length + i + 1] = str[length - i];
}
return str.splice(length + 1).join('');
}
另一个变体(它在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?)一起工作。也就是说,你可以赋值,但结果字符串不会改变。
首先,使用array .from()将字符串转换为数组,然后使用array .prototype.reverse()将数组反向,然后使用array .prototype.join()将其转换为字符串。
const reverse = str => Array.from(str).reverse().join('');
有多种方法,你可以检查下面的,
1. 传统的for循环(递增):
函数reverseString (str) { let stringRev =""; For(令i= 0;我< str.length;我+ +){ stringRev = str[i]+stringRev; } 返回stringRev; } alert (reverseString(“Hello World !”);
2. 传统的for循环(递减):
函数反向字符串(str){ 让 revstr = “”; for(let i = str.length-1, i>=0, i--){ Revstr = Revstr+ str[i]; } 返回修订版; } alert(reverseString(“Hello World!”));
3.使用for-of循环
函数反向字符串(str){ 让 strn =“”; for(let char of str){ strn = char + strn; } 返回 STRN; } alert(reverseString(“Get Well soon”));
4. 使用forEach/高阶数组方法:
函数反向字符串(str){ 让 revSrring = “”; str.split(“”).forEach(function(char){ revSrring = char + revSrring; }); 返回转速Srring; } alert(reverseString(“Learning JavaScript”));
5. ES6标准:
函数反向字符串(str){ 让 revSrring = “”; str.split(“”).forEach(char => revSrring = char + revSrring); 返回转速Srring; } alert(reverseString(“Learning JavaScript”));
6. 最新的方式:
函数反向字符串(str){ return str.split(“”).reduce(function(revString, char){ 返回字符 + revString; }, ""); } alert(reverseString(“Learning JavaScript”));
7. 你也可以用下面的方法得到结果,
函数反向字符串(str){ return str.split(“”).reduce((revString, char)=> char + revString, “”); } alert(reverseString(“Learning JavaScript”));