当一个字符串被传递给一个带有返回语句的函数时,你如何在JavaScript中反转它,而不使用内置函数(.reverse(), . charat()等)?


当前回答

在一次面试中,我被要求在不使用任何变量或本机方法的情况下反转一个字符串。这是我最喜欢的实现:

function reverseString(str) {
    return str === '' ? '' : reverseString(str.slice(1)) + str[0];
}

其他回答

在ECMAScript 6中,你可以在不使用.split(") split方法的情况下更快地反转字符串,展开操作符如下所示:

var str = [...'racecar'].reverse().join('');

我们可以从字符串数组的两端开始迭代:start和end,并在每次迭代中交换。

function reverse(str) {
 let strArray = str.split("");
 let start = 0;
 let end = strArray.length - 1;

 while(start <= end) {
  let temp = strArray[start];
  strArray[start] = strArray[end];
  strArray[end] = temp;

  start++;
  end--;
 }
 return strArray.join("");
}

虽然操作次数减少了,但其时间复杂度仍为O(n) 操作的数量仍然与输入的大小成线性比例。

参考: 阿尔戈日报

如果你不想使用任何内置功能。试试这个

var string = 'abcdefg';
var newstring = '';

for(let i = 0; i < string.length; i++){
    newstring = string[i] += newstring;
}

console.log(newstring);

在适当的位置反转字符串是不可能的,但是在不适当的位置反转字符串是可能的。

你不能将字符串反向,但你可以使用这个:

String.prototype.reverse = function() { 返回this.split (" ") .reverse () . join (" "); } var s = "ABCD"; S = S .reverse(); console.log(年代);