Chrome開発者ツールでこのコードを試しました:
var str = "1111111";
str[0] = 2;
2
console.log(str[0]);
1
ご覧のように、出力は 1 でしたが、私は 2 を期待していました。 2まで可変str
?
Chrome開発者ツールでこのコードを試しました:
var str = "1111111";
str[0] = 2;
2
console.log(str[0]);
1
ご覧のように、出力は 1 でしたが、私は 2 を期待していました。 2まで可変str
?
これは、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'));
これを試してみてください
str.replace(str.charAt(0), "2")
最初に文字列を分割する必要があります。
次のようなものです:
str = str.split('');
その後、配列として扱うことができます。
サイの本から:
JavaScript では、文字列は不変オブジェクトです。つまり、文字列内の文字は変更できず、文字列に対する操作は実際に新しい文字列を作成します。文字列は、値ではなく参照によって割り当てられます。一般に、オブジェクトが参照によって割り当てられる場合、1 つの参照によってオブジェクトに加えられた変更は、そのオブジェクトへの他のすべての参照を通じて表示されます。ただし、文字列は変更できないため、文字列オブジェクトへの参照を複数持つことができ、知らないうちに文字列値が変更される心配はありません。