我正在尝试替换数组中每个元素的第8个字符。我知道JavaScript没有内置函数来替换字符串字符。我能够在这个网站上找到可能有用的代码。它们接受字符串作为参数,但是当我传入一个像[0]这样的数组时,它不会改变字符串中的任何内容。这是为什么?我有办法让这个工作吗?提前感谢您的帮助。
var cookies = ["cartItem1", "cartItem2", "cartItem3", "cartItem4"];
function setCharAt(str,index,chr) {
if(index > str.length-1) return str;
return str.substr(0,index) + chr + str.substr(index+1);
}
function delCookie(){
cookies.splice(0,1);
setCharAt(cookies[0], 8, "Z");
}
delCookie();
我也是这样试过的:
var cookies = ["cartItem1", "cartItem2", "cartItem3", "cartItem4"];
String.prototype.replaceAt=function(index, character) {
return this.substr(0, index) + character + this.substr(index+character.length);
};
function delCookie2(){
cookies.splice(0,1);
cookies[0].replaceAt(8, "Z");
}
delCookie2();
答案 0 :(得分:2)
您的方法(setCharAt
和replaceAt
)都返回结果,这意味着您必须设置它:
function delCookie() {
cookies.splice(0,1);
cookies[0] = cookies[0].replaceAt(8, "Z");
//or
// cookies[0] = setCharAt(cookies[0], 8, "Z");
}
答案 1 :(得分:0)
" setCharAt"函数实际上并没有改变传入的字符串 - 它返回一个改变了相应字符的新字符串。为了获得您想要的行为,您必须用新的字符串替换数组中的旧字符串。