在这段代码中:
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”)!这是怎么回事?!
答案 0 :(得分:12)
JavaScript中的字符串是不可变的。你不能改变它们,所以这条线什么都不做
number[i] = '1';
答案 1 :(得分:1)
您正在尝试将字符串作为数组读取。 Char by Char。看起来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)
}
}
答案 2 :(得分: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'。