很长一段时间以来,我一直在研究以下算法作为解决反向字符串的方法:
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;
只会给我不反转的字符串,但是到底是什么导致它反转呢?图表可能会有所帮助。
答案 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);