且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

javascript中递归调用返回结果的问题

更新时间:2023-02-26 18:35:31

谢邀

改一下就能用了

function searchBrIndex(val,start,arr){
    if(typeof val !== "string"){
        throw new Error("参数不是字符串")
    }
    var arr = arr || [];
    var start = start || 0;
    var index = val.indexOf("<br>",start);
    if(index !== -1){
        arr.push(index);
        // 这儿可以不用return,但return了就成了尾递归了。
        // 然后虽然递归了一下,若不传arr进去就成了 @scort[scort] 讲的那个问题
        return searchBrIndex(val,index+4, arr);
    }
    return arr;
}

换个实现

function searchBrIndex(str, flag){
  var arr = [];
  var reg = new RegExp(flag+'','g');
  (str+'').replace(reg, (a,b)=> arr.push(b));
  return arr;
}

console.log(searchBrIndex("12345<br>6789<br>12345", "<br>"))