该字符串到底如何反转?

时间:2019-05-07 03:29:24

标签: javascript algorithm

很长一段时间以来,我一直在研究以下算法作为解决反向字符串的方法:

function reverse(str) {
    let reversed = '';
  for (let character of str) {
    reversed = character + reversed;
  }
  return reversed;
}

但是我刚刚意识到,我不确定到底是如何character + reversed;反转字符串的方式(如果您愿意的话)。

我知道我正在创建一个临时变量,该临时变量每次通过character循环重新声明,然后我说of和可迭代对象str,依次一个并将其设置为等于character的临时变量,然后我将该character并添加到reversed的字符串中。

反转字符串的精确度如何?我知道如果我做reversed = reversed + character;只会给我不反转的字符串,但是到底是什么导致它反转呢?图表可能会有所帮助。

4 个答案:

答案 0 :(得分:3)

str = 'abc';
reverse = '';

// iteration
reverse = 'a' + '';   // a
reverse = 'b' + 'a';  // ba
reverse = 'c' + 'ba'; // cba

答案 1 :(得分:1)

让我们尝试使用简单的console.log()进行测试。最终,您应该教会自己使用调试器,该调试器不仅具有将功能输出到屏幕上的功能,而且还具有更多的功能。

function reverse(str) {
  let reversed = '';
  for (let character of str) {
    console.log(`'${character + reversed}' = '${character}' + '${reversed}'`);
    reversed = character + reversed;
  }
  return reversed;
}

reverse('world');

答案 2 :(得分:0)

发生的是for循环遍历字符串中的每个字符。每次循环时,它会将当前字符设置为等于“字符”,然后将其粘贴到所有先前处理的字符之前。

如果您想真正了解它在做什么,请尝试运行以下命令:

function reverse(str) {
    let reversed = '';
    for (let character of str) {
        console.info("current character being processed: " + character);
        console.info("reversed string before paste: " + reversed);
        reversed = character + reversed;
        console.info("reversed string after paste: " + reversed);
    }
    return reversed;
}

console.log('reverse("abcd") = ' + reverse("abcd"));

我建议您先阅读console.log(),console.info(),console.warn()等。它们在调试时非常有用。

答案 3 :(得分:0)

var str = "ABC,DEFG,H";
console.log(str);
var reversestr = "";
for(x in str){
    console.log('reversestr = '+ str[x] + "+" + reversestr);
    reversestr = str[x] + reversestr; 
}
console.log(reversestr);