逻辑思路

本文介绍了一个递归函数实现自动重试机制的方法,并展示了如何通过一系列函数调用将前一个函数的返回值作为参数传递给下一个函数。此外,还提供了解析树状结构数据及字符串转换为数据结构的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请求一个方法,可能成功,可能失败。若失败,最多自动请求三次,若仍为失败,则结束。
function Random() {
	return num = parseInt(Math.random()*10);
}
function Request(count = 1) {
	let num = Random();
	if(num % 2 == 0){
		console.log('失败第'+ count + '次');
		count++;
		if(count <= 3){
			Request(count);
		}
		return false;
	}else{
		return true;
	}
}
Request()
一个数组里面有n个函数,第一个函数的返回值作为参数传给第二个函数,第二个函数的返回值作为参数传给第三个函数
function f1(){
    console.log('f1接受到的值:')
    return 'f1'
    
}
function f2(f1){
    console.log('f2接受到的值:'+ f1)
    return 'f2'
    
}
function f3(f2){
    console.log('f3接受到的值:'+ f2)
    return 'f3'
    
}
function f4(f3){
    console.log('f4接受到的值:'+ f3)
    return 'f4'
    
}
function test(index = 0, result) {
	let arr = [f1, f2, f3, f4];
	let value = arr[index](result);
	index++;
	if(index < arr.length){
		test(index,value);
	}
}
test(0, '')
解析树状结构
var treeList = {
        text: '1',
        children:[
            {
                text: '1-1',
                children: [
                    {
                        text: '1-1-1'
                    },
                    {
                        text: '1-1-2'
                    }
                ]
            },
            {
                text: '1-2',
                children: [
                    {
                        text: '1-2-1'
                    },
                    {
                        text: '1-2-2'
                    }
                ]
            }
        ]
    }
    function getText(obj) {
        console.log(obj.text);
        if(Reflect.has(obj,'children')){
            let childrenList = obj.children;
            let len = childrenList.length;
            for(var i = 0; i < len; i++){
                getText(childrenList[i]);
            }
        }
    }
getText(treeList);
将字符串解析成数据结构
//   let str = '1-1-1-1';
//   let obj = [{
//         text: '1',

//         children: [
//             {
//                 text: '1-1',

//                 children: [
//                     {
//                         text: '1-1-1',

//                         children: [
//                             {
//                                text: '1-1-1-1',
//                             }
//                         ]
//                     }
//                 ]
//             }
//         ]
//     }]
//关键:找一个第三变量来记录上一次的结构(引用赋值:指向同一处地址,一处改变,所有都改变)

//解法一:以数组为规律
    function test(str){
            let arr = str.split('-'); 
            let result = [];
            let obj = {};
            let j = 1;
            obj.text = str.substr(0,j);
            let currentArr = [];  
            result.push(obj);
            for(var i = 0; i < arr.length - 1; i++){
                j = j + 2;
                let childrenArr = [];
                let childrenObj = {};
                childrenArr.push(childrenObj);
                childrenObj.text = str.substr(0,j);
                if( i == 0 ){
                    obj.children = childrenArr;
                }else{
                    currentArr[0].children = childrenArr;  
                }  
                currentArr = childrenArr;
            }
            console.log(result);
    }
    test(str);

//解法二:以对象为规律
function test(str){
            let resultArr = [];
            let arr = str.split('-');
            let curChildren = [];
            let result = {}; 
            let j = 1;
            for(var i = 0; i < arr.length; i++){
                let obj = {};
                obj.text = str.substr(0,j);
                obj.children = [];
                if(i == 0){
                    result = obj;
                }else{
                    curChildren.push(obj);
                }
                j = j + 2;
                curChildren = obj.children;
            }
			resultArr.push(result);
            return resultArr;
}
        test(str)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值