我刚在Chrome开发者工具中试过这段代码:
var str = "1111111";
str[0] = 2;
2
console.log(str[0]);
1
正如你所看到的,输出是1,我预期2.我的结论是这并不意味着这样工作,所以我问我怎么能让它工作 - 我将如何改变第一个'项目'varable str
到2?
答案 0 :(得分:3)
那是因为在JavaScript中字符串是不可变对象。您应该使用substr
功能:
String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
};
var str = '11111';
console.log(str.replaceAt(0, '2'));
答案 1 :(得分:0)
来自rhino book:
在JavaScript中,字符串是不可变对象,这意味着它们中的字符可能不会被更改,并且字符串上的任何操作实际上都会创建新字符串。字符串按引用分配,而不是按值分配。通常,当通过引用分配对象时,通过一个引用对对象所做的更改将通过对该对象的所有其他引用可见。但是,由于无法更改字符串,因此您可以对字符串对象进行多次引用,而不必担心字符串值会在您不知情的情况下发生更改。
答案 2 :(得分:0)
试试这个
str.replace(str.charAt(0), "2")
答案 3 :(得分:0)
您需要先拆分字符串。
类似于:
str = str.split('');
然后你可以把它当成一个数组。