2017-09-07 10 views
1

プログラムのログ内の変数が3文字の文字列の順列を期待値と異なるように見つけるには?変数pxのログは異なっていますが、配列にプッシュすると常に["b"、 "a"、 "c"]として出力されますか? JSは、プリミティブ型(数、文字列、ブール値など)とオブジェクトを持っている3つの文字プログラム内で3文字の文字列の順列を検索すると、予想される値とは異なるプログラムログの変数になりますか?

function perm(str) { 
 
    var str = str.split(''); 
 
    var res = [] 
 
    var bag = [] 
 

 
    for (i = 0; i < str.length; i++) { 
 
    n = 1; 
 
    var px = str; 
 

 

 

 
    for (j = 1; j < 3; j++) { 
 
     if (j == 1) {} 
 
     if (j == 2) { 
 
     var tempx = px[1]; 
 
     var tempy = px[2]; 
 

 
     px[1] = tempy; 
 
     px[2] = tempx; 
 
     } 
 
     console.log(px) 
 
     bag.push(px) 
 
    } 
 

 
    if (i < (str.length - 1)) { 
 
     tempa = str[0]; 
 
     tempb = str[0 + 1]; 
 

 
     str[0 + 1] = tempa; 
 
     str[0] = tempb; 
 
    } 
 
    } 
 

 
    console.log(bag); 
 
} 
 

 
perm("abc");

+0

順列は何ですか?私はこのコードを改善できると確信しています。 –

+0

permutationは、一連の物や数を整理したり整理したりすることができるいくつかの可能な方法のそれぞれを見つけることです。文字列 "abc"を持っていれば、すべての方法を出力する必要があります。 "a" "b" "c"新しい文字列を作成するように調整されています –

+0

コードを実行するためにスニペットを置くと便利です – Kalamarico

答えて

0

と列の順列を見つける

プログラム。プリミティブが値で保存されるとき、オブジェクト型は参照によって保存されます。例えば、

var obj = { 
 
    a: "Hello", 
 
    b: 2 
 
}; 
 

 
console.log(obj); // {a: "Hello", b: 2}; 
 

 
var ref = obj; 
 
console.log(obj) // {a: "Hello", b: 2}; 
 

 
obj.a = "new string"; 
 
ref.b = -1; 
 

 
// The output will be the same, because objects save by reference. 
 
console.log(obj); // {a: "new string", b: -1} 
 
console.log(ref); // {a: "new string", b: -1}

あなたはpx配列(配列はまた、参照により、保存された)と同じエラーを作成しました。これを修正するには、このループで毎回pxアレイを作成する必要があります。for (j = 1; j < 3; j++) 固定スニペット。

function perm(str){ 
 
    //var str=str.split(''); 
 

 
    var res=[] 
 

 
    var bag=[] 
 

 

 

 
    for(i=0;i<str.length;i++){ 
 
     n=1; 
 
     for(j=1;j<3;j++){ 
 
      var px=str.split(''); 
 
      if(j==1){ 
 

 
      } 
 
      if(j==2){ 
 
       var tempx=px[1]; 
 
       var tempy=px[2]; 
 

 
       px[1]=tempy; 
 
       px[2]=tempx; 
 

 

 
      } 
 

 
      console.log(px) 
 

 
      bag.push(px) 
 
     } 
 

 

 
     if(i<(str.length-1)){ 
 

 
      tempa=str[0]; 
 
      tempb=str[0+1]; 
 

 
      str[0+1]=tempa; 
 
      str[0]=tempb; 
 

 
     } 
 
    } 
 
    console.log(bag); 
 
} 
 

 
perm("abc");

関連する問題