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


当前回答

function reverseWords(str) {
  // Go for it
  const invertirPalabra = palabra => palabra.split('').reverse().join('')
  return str.split(' ').map(invertirPalabra).join(' ')
  // con split convierto string en array de palabras, le paso ' ' 
  // que es que me lo separe por espacios
  // luego invierto cada palabra...
  // y luego con join las uno separando por espacios
}

其他回答

这样的事情应该遵循最佳实践:

(function(){ 'use strict'; var str = "testing"; //using array methods var arr = new Array(); arr = str.split(""); arr.reverse(); console.log(arr); //using custom methods var reverseString = function(str){ if(str == null || str == undefined || str.length == 0 ){ return ""; } if(str.length == 1){ return str; } var rev = []; for(var i = 0; i < str.length; i++){ rev[i] = str[str.length - 1 - i]; } return rev; } console.log(reverseString(str)); })();

我们可以从字符串数组的两端开始迭代: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) 操作的数量仍然与输入的大小成线性比例。

参考: 阿尔戈日报

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

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

有多种方法,你可以检查下面的,

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”));

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

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

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

console.log(newstring);