反转给出相同字符串的字符串

时间:2017-07-13 17:01:29

标签: javascript

之前我已经问过这个问题但是我想知道我的解决方案有什么问题(我可以谷歌一个解决方案,但更有兴趣了解我做错了什么)。我想反转一个字符串而不使用一个主要的内置函数。下面是我的代码,但它返回相同的字符串,

s="hello";
var opp=s;
for (var i=0; i< s.length; i++)
{
   opp[i] = s[s.length-i];        
}
alert (opp);

3 个答案:

答案 0 :(得分:2)

您的代码返回相同的字符串,因为JavaScript字符串已冻结。任何修改字符串的尝试都将被忽略。相反,您需要根据您的规则构建新字符串。

您可以通过将opp分配给空字符串var opp = '',然后按相反的顺序将字符推送到opp += s[s.length-i]来更新代码。

我也在你的代码中发现了一个错误。什么会返回第一次迭代?它将尝试访问缺少位置的char:s.length - i = s.length - 0 = s.length。因为在JavaScript中字符串和数组是零索引的,所以字符串中的max char索引将为s.length - 1。您正尝试访问s.length

答案 1 :(得分:0)

字符串为immutable:您无法分配索引。 opp[i]是只读的。

另一种方法是使用数组:

s = "hello";
var opp = [];
var len = s.length - 1;
for (var i = 0; i <= len; i++)
   opp[i] = s[len - i];        

console.log(opp.join(""));

答案 2 :(得分:0)

with reduce

'some word'
  .split('')
  .reduce(({str, tail}, char, i, word) => {
    return {tail: tail - 1, str: str + word[word.length + tail]}
  }, {str: '', tail: -1})
  .str