我有这个函数,用一个叫做“之后”的字符串替换indexOf(before)处的数组元素。除了我得到两个“ after”值而不是一个,这几乎可以正常工作
这是我的代码:
function myReplace(str, before, after) {
var strArr = [];
strArr = str.split(' ');
for (var i = 0; i < strArr.length; i++) {
strArr.splice(strArr.indexOf(before), 1, after);
}
return strArr;
}
myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
这是它返回的内容:
[“ A”,“快速”,“棕色”,“狐狸”,“泄漏”,“上方”,“该”,“懒惰”,“泄漏”]
怎么了?
最佳答案
嗯,这里的问题真不幸!这是因为在找到元素4之后,indexOf返回-1(未找到其表达方式),并替换了数组中的最后一个(-1)。
function myReplace(str, before, after) {
var strArr = [];
strArr = str.split(' ');
for (var i = 0; i < strArr.length; i++) {
var index = strArr.indexOf(before);
if(index!=-1){
strArr.splice(index, 1, after);
}
}
return strArr;
}
希望这可以帮助。