句子反向循环不起作用

时间:2017-10-24 14:41:11

标签: javascript

我试图通过循环来反转句子。看起来每次迭代时,我添加到句子末尾的字母都会消失。不知道出了什么问题。我知道.split(“”).reverse().join(“”)但需要在这里使用循环。任何帮助都会很棒。

var sntn = "Once upon a time in a village called 'Vlasovo'";
var sntnSplit = sntn.split("");
var lmt = sntnSplit.length;

for (i = 0; i < lmt; i++) {
  sntnSplit[lmt - i] = sntnSplit[0];
  sntnSplit.splice(0, 1);
}

console.log(sntnSplit);

4 个答案:

答案 0 :(得分:0)

这是you want reverse stringgiven ??

var sntn = "Once upon a time in a village called 'Vlasovo'";
var sntnSplit = sntn.split("");
var lmt = sntnSplit.length; 
console.log(sntnSplit.reverse().join(''));

答案 1 :(得分:0)

您的问题是Array.splice,它正在删除数组中的元素。因此它只包含循环结束时的最后一个char。

你可以简单地“向后”运行循环。

var input = "Once upon a time in a village called 'Vlasovo'";

for(var i = input.length - 1, output = ''; i >= 0; --i) {
  output += input[i];
}

console.log(output);

答案 2 :(得分:0)

让我们分析您的代码所做的事情,以及更短的字符串,例如"abcd"

var sntn = "abcd";
var sntnSplit = sntn.split(""); // = ['a','b','c','d']
var lmt = sntnSplit.length; // = 4

// unroll the loop part
// for(i=0; i<lmt; i++) { i: 0 -> 4
var i = 0;
// lmt - i == 4
sntnSplit[lmt - i] = sntnSplit[0]; // sntnSplit = ['a','b','c','d','a'];
sntnSplit.splice(0,1); // sntnSplit = ['b','c','d','a'];
// lmt - i == 3
i = 1
sntnSplit[lmt - i] = sntnSplit[0]; // sntnSplit =  ['b','c','d','b'];
sntnSplit.splice(0,1); // sntnSplit = ['c','d','a'];
i = 2
// lmt - i == 2
sntnSplit[lmt - i] = sntnSplit[0]; // sntnSplit = ['c','d','c'];
sntnSplit.splice(0,1); // sntnSplit = ['d','c'];
i = 3
// lmt - i == 1
sntnSplit[lmt - i] = sntnSplit[0]; // sntnSplit = ['d','d'];
sntnSplit.splice(0,1); // sntnSplit = ['d'];

console.log(sntnSplit)

如果你分析你的代码的每一行,那么很明显是什么错误。

答案 3 :(得分:-1)

根据需要使用for循环。你只需要从长度下来

let c = "Once upon a time in a village called 'Vlasovo'".split("");
let s = '';
for(let i = c.length; i>=0; i--) {
 s+=c[i]
}

//未经测试,但必须正常工作