JS与PHP递归的区别

<?php
$areas=[
    ['id'=>1,'pid'=>0,'name'=>'中国'],
    ['id'=>2,'pid'=>1,'name'=>'山东省'],
    ['id'=>3,'pid'=>1,'name'=>'北京市'],
    ['id'=>4,'pid'=>2,'name'=>'济南市'],
    ['id'=>5,'pid'=>4,'name'=>'历下区'],
    ['id'=>6,'pid'=>2,'name'=>'临沂市'],
    ['id'=>7,'pid'=>6,'name'=>'郯城县'],
    ['id'=>8,'pid'=>6,'name'=>'沂水县'],
];

function tree($id,&$item){
    global $areas;
    foreach ($areas as $area){
        if(!isset($area['child'])){
            $area['child']=[];
        }
        if($area['pid']==$id){
            $item[]=$area;
            tree($area['id'],$item[count($item)-1]['child']);
            if(empty($item[count($item)-1]['child'])){
                unset($item[count($item)-1]['child']);
            }
        }
    }
}
tree(0,$items);
<script>
    let areas=<?php echo json_encode($areas)?>;
    function tree(pid,$items){
        areas.forEach(item => {
            if (pid === item.pid) {
                let child = {
                    value: item.id,
                    label: item.name,
                    children: [],
                }
                $items.push(child)
                this.tree(item.id, child.children)
                if (child.children.length === 0) {
                    delete child.children
                }
            }
        })
    }
    let items=[]
    tree(0,items)
    console.log(items)
</script>

今天想用js的方式写个递归,后来就是不行。。。。
看来是有差别的。。。。。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

js用引用吗?没记错的话,你写的js要成功在vue或者其他前端框架下使用才会有效

3年前 评论
xieruidong521 (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!