2012-11-21 2 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); 
    } 

나는 x[x.length - 1]에 할당 cha[cha.indexOf(x[x.length-1]) + 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;