2012-11-21 54 views
-1

我不知道为什么,但此代码未将cha[cha.indexOf(x[x.length-1]) + 1]的值分配给x[x.length - 1]。我试图将其转换为任何数组,但没有做任何事情。JavaScript将一个字符串的索引值分配给另一个索引值

var cha = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + ""; 
    var n = notch; // number to start counting from 
    var x = cha[0]; 
    // stuff 
    console.log(x); 
    // generation loop 
    while (n > 0) { 
     if(x[x.length - 1] == cha[cha.length-1]) { 
      //^correct logic 
      x[length] = cha[0]; 
     } else { 
      // 
      newPush = cha[cha.indexOf(x[x.length-1]) + 1]; 
      a = x /*.split(""); 
      a.pop(); <= Failed attempt 
      a.push(newPush);*/ 
      x = a; 
      //x[x.length-1] = cha[cha.indexOf(x[x.length-1]) + 1]; 
      //x[x.length-1] = "D"; 
      console.log("x[x.length - 1] = " + x[x.length - 1]); 
      console.log("cha[cha.indexOf(x[x.length-1]) + 1] = " + cha[cha.indexOf(x[x.length-1]) + 1]); 
     } 
     n--; 
     console.log(cha[cha.indexOf(x[x.length-1]) + 1]); 
     console.log(x.lastIndexOf(x[x.length-1]) + 1); 

     console.log("n = " + n + ", x = " + x); 
    } 

我想从cha[cha.indexOf(x[x.length-1]) + 1]分配给x[x.length - 1]新的角色。我一直在Chrome开发者工具(v23.0.1271.64)中对它进行调试,但我非常怀疑这是专门针对Chrome的。我可能不理解价值/参考传递或什么,但任何帮助表示赞赏。 (如果可以的话,请附上代码示例。)

+2

“x”以长度为1的字符串开头。为什么要将它当作数组对待? **字符串不是数组。**字符串甚至不可变。你真的想用这个代码来完成什么?此外,[不要使用括号来索引字符串;使用'charAt()'](http://stackoverflow.com/q/5943726/139010)。 –

+0

@MattBall我明白你在说什么,我只是总是把它括起来,但我会用charAt()来试试它。我试图创建一个字符串,其中'x =“abc”',新字符串将是'“abd”'例如。我只是为了方便而覆盖'x',但它可以做成不同的字符串。以这种方式创建新字符串的任何方式(示例)? – Andrejewski

+0

覆盖x:'x ='abc'; x = x.substring(0,x.length-1)+'d'' –

回答

0
var alphabet = "abcdefghijklmnopqrstuvwxyz"; 

prefix = oldString.slice(0, oldString.length - 1); 
suffix = oldString.substr(-1, 1); 
newSuffix = alphabet.charAt(alphabet.indexOf(suffix) + 1 % alphabet.length); 
newString = prefix + newSuffix; 
相关问题