所以我尝试使用map()方法如下:
words = ["One", "Two"];
words = words.map(function(currentValue)
{
alert(currentValue[0]);//Output: O Then: T
currentValue[0] = "A";
alert(currentValue[0]);//Output: O Then: T
return currentValue;
});
为什么currentValue [0]没有被分配值" A"?!?
答案 0 :(得分:2)
您尝试通过索引分配给特定位置的字符串,这是不可能的,因为字符串是不可变的。如果要更改字符串,则需要创建一个新字符串。
答案 1 :(得分:1)
正如Alex K正确指出的那样,字符串是不可变的,你无法修改它们。
由于你使用的是.map()
,这里要做的就是构造一个新字符串并返回:
var words = ["One", "Two"];
words = words.map(function (currentValue) {
return "A" + currentValue.substring(1);
});
console.log(words); // outputs ["Ane", "Awo"];
根据经验,您不应尝试使用.map()
来修改现有值。 .map()
的目的是产生一组新的值,并保持原始值不受影响。
答案 2 :(得分:0)
在JavaScript String
中是原始类型,所以你不能改变它。
字符串,数字,布尔值,空值,未定义,符号(ECMAScript 6中的新内容)是原始类型。