我正在尝试使用 For 循环反向打印字符串“hello”,结果应该是“olleh”。但是,在将字符串推送到数组后,我无法删除字符串中的最后一个字符。结果,它只打印字符串的最后一个字母。
如何更新此代码,以便循环在将字符串推送到数组后删除字符串中的最后一个字符?
function reverseString(str) {
let holder = [];
for (let i = str.length; i > 0; i--) {
holder.push(str.charAt(str.length - 1));
str.slice(0, -1);
}
return holder;
}
console.log(reverseString("hello"));
slice()
方法提取字符串的一部分,然后将其作为新字符串返回,而不修改原始字符串。
您必须将 返回的字符串存储回变量:
function reverseString(str) {
let holder = [];
for (let i = str.length; i > 0; i--){
holder.push(str.charAt(str.length -1));
str = str.slice(0, -1); // update the variable
}
return holder.join(''); // join them to return the string
}
console.log(reverseString("hello"));
虽然你可以像下面这样简单地拆分和反转:
function reverseString(str) {
return str.split('').reverse().join('');
}
console.log(reverseString("hello"));
使用
i-1
而不是 str.length-1
。 i
会遍历字符串中的所有字符。 Slice 是一种缓慢的方法,所以在没有其他办法之前避免使用它
function reverseString(str) {
let holder = [];
for (let i = str.length; i > 0; i--) {
holder.push(str.charAt(i - 1));
}
return holder;
}
console.log(reverseString("hello").join(''));
最简单、最小的方法是结合 3 种方法:
function reverseString(str) {
return str.split("").reverse().join("");
}
console.log(reverseString("hello"));
function arr(str){
let reverse = "";
for( let i = str.length -1; i>=0 ; i-- ){
reverse += str[i]
}
return reverse
}
console.log(arr(" MERN Stack Developer"))
结合 for of 循环和 split(''),您可以拆分单词并将每个字符添加到数组的开头。
let word = 'hello';
let holder = [];
for(let char of word.split('')) {
// Add to start of array
holder.unshift(char);
}
console.log(holder.join(''));