4

このコードでは:

function change(s)
{
  var number = s.replace(/\s+/g, '');
  for(var i = 0; i < number.length ; i++)
  {
    console.log(number[i]); //Line1
    number[i] = '1';
    console.log(number[i]); //Line2
  }
}

Line1 と Line2 の結果はどちらも同じです ("2" が返されます)。ここで何が起こっているのですか?

4

3 に答える 3

12

JavaScript の文字列は不変です。それらを変更することはできないので、この行は何もしません

number[i] = '1';
于 2013-07-26T15:38:17.083 に答える
1

文字列を配列として読み取ろうとしています。文字ごと。このような場合、JS はインデックスの値を変更することを許可していないようです。number = "12345" のようにすると、index: (I) の値が変わります。しかし、それはあなたの目的を解決しません。やろうとしていることを行うには、数を分割してから、反復して変更する必要があります。

例:

function change(s) {
    var number = s.replace(/\s+/g, '');
    var sArr = number.split("");
    for (var i = 0; i < number.length ; i++) {
    console.log(sArr[i]); //Line1 (prints original)
    sArr[i] = i;
    console.log(sArr[i]); //Line2 (prints changed)
    }
    }
于 2013-07-26T15:52:54.323 に答える
0

これであなたが何を望んでいるのか完全にはわかりませんが、これでうまくいくと思いますか?

function change(s)
{
    var number = s.replace(/\s+/g, '');
    var newstring = number;
    for(var i = 0; i < number.length ; i++)
    {
        console.log(number[i]); //Line1
        newstring[i] = '1';
        console.log(number[i]); //Line2
    }
    return(newstring); //or something to that effect
}

さて、これは実際には無意味なコードです。「1」をもう少し便利なものに置き換えると思います。

于 2013-07-26T15:52:14.927 に答える