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",则索引处的值:(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 回答