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


当前回答

如果您对性能和时间复杂度更感兴趣,可以使用此方法。在这个方法中,我将字符串分为两部分,并按照长度/2次循环迭代进行排序。

Let STR = "abcdefghijklmnopqrstuvwxyz" 函数反向(str) { Let store = "" 让store2 = "" (让我= str.length / 2, > = 0;我——){ 如果(str.length % 2 ! = = 0) { store += str.charAt(i) str.slice((str.length/2)+1, str.length).charAt(i) 其他}{ += str.charAt(i-1) str.slice((str.length/2), str.length).charAt(i) } } 返回store2 +存储 } console.log(反向(str))

这不是最优的,但我们可以这样想。

其他回答

function reverse(str){
var s = "";
for (var i = str.length - 1; i >= 0; i--){
    s += str[i];
}
return s;
};
reverse("your string comes here")

我知道这是一个已经被很好地回答过的老问题,但为了自娱自乐,我写了下面的反向函数,并想把它分享给其他人,以防它对其他人有用。它处理代理对和组合标记:

function StringReverse (str)
{
  var charArray = [];
  for (var i = 0; i < str.length; i++)
    {
      if (i+1 < str.length)
        {
          var value = str.charCodeAt(i);
          var nextValue = str.charCodeAt(i+1);
          if (   (   value >= 0xD800 && value <= 0xDBFF
                  && (nextValue & 0xFC00) == 0xDC00) // Surrogate pair)
              || (nextValue >= 0x0300 && nextValue <= 0x036F)) // Combining marks
            {
              charArray.unshift(str.substring(i, i+2));
              i++; // Skip the other half
              continue;
            }
        }

      // Otherwise we just have a rogue surrogate marker or a plain old character.
      charArray.unshift(str[i]);
    }

  return charArray.join('');
}

感谢Mathias、Punycode和其他各种参考资料,让我了解了JavaScript字符编码的复杂性。

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

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

如果您对性能和时间复杂度更感兴趣,可以使用此方法。在这个方法中,我将字符串分为两部分,并按照长度/2次循环迭代进行排序。

Let STR = "abcdefghijklmnopqrstuvwxyz" 函数反向(str) { Let store = "" 让store2 = "" (让我= str.length / 2, > = 0;我——){ 如果(str.length % 2 ! = = 0) { store += str.charAt(i) str.slice((str.length/2)+1, str.length).charAt(i) 其他}{ += str.charAt(i-1) str.slice((str.length/2), str.length).charAt(i) } } 返回store2 +存储 } console.log(反向(str))

这不是最优的,但我们可以这样想。

好的,很简单,你可以创建一个简单的循环函数来为你反向字符串,而不需要使用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"