我有这个函数,用一个叫做“之后”的字符串替换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;
}


希望这可以帮助。

10-04 22:42