js 递归算法将扁平数据处理成树状数据

news/2024/7/19 13:46:52 标签: js, 递归算法, javascript, vue.js

示例

javascript"><!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        const lists=[{
            "name":'刘邦',
            "id":'1',
            "relation":''
        },{
            "name":'李渊',
            "id":'2',
            "relation":''
        },{
            "name":'福临',
            "id":'3',
            'relation':''
        },{
            "name":'玄烨',
            "id":'4',
            'relation':'3'
        },{
            "name":'刘盈',
            "id":'5',
            'relation':'1'
        },{
            "name":'李世民',
            "id":'5',
            'relation':'2'
        },,{
            "name":'刘肥',
            "id":'5',
            'relation':'1'
        }]
      function  recursion(list, rootValue) {
            var arr = []
            list && list.forEach(item => {
                if (item.relation === rootValue) {
                    // 要去找这个item它的子级  item.id = 子级的relation
                    arr.push(item) // 如果找到了item 先把它放到数组中
                    const child = recursion(list, item.id)
                
                    if (child.length) {
                        // 表示了找到了子元素
                        item.children = child
                    }
                }
            })
            return arr
        }
        console.log(recursion(lists,''));
        
    </script>
</body>

</html>

打印结果

在这里插入图片描述


http://www.niftyadmin.cn/n/874945.html

相关文章

不关注公众号可以获取openid吗_微信公众平台开发获取 UnionID

微信公众平台更新&#xff0c;为开发者提供UnionID机制经开发者反馈&#xff0c;由于同一公司下多个公众号之间需要用户帐号互通&#xff0c;微信开放平台提供了UnionID机制&#xff0c;来解决此问题。通过获取用户基本信息接口&#xff0c;开发者可通过OpenID来获取用户基本信…

垃圾邮件分类数据集_处理同时含有定量和分类变量的数据集的PCA方法

R包ade4处理包含定量和分类变量数据集的PCA方法常规的主成分分析(PCA)中&#xff0c;数据集所涉及的变量通常全部为定量变量。对于定性变量而言&#xff0c;通常将它们转化为0-1类型的二元数据后&#xff0c;作为PCA的输入(尽管效果可能不是很好)。如果是变量全部为分类变量&am…

vue 父组件使用sync修饰符直接获取子组件传来的值

子组件触发事件 <div class"btns" click"sure"><div class"confirm">确定</div></div> //事件名前加update sure() {this.$emit(update:showDialog,false) },父组件 sync修饰符 <child :showDialog.sync"succ…

互联网+大赛作品_“颂中国力量 绘美好梦想”全市中小学生互联网+书画大赛作品展示(一)...

由平顶山市教育体育局主办&#xff0c;平顶山市教育体育局关心下一代工作委员会、平顶山教育电视台、教育部中国书画等级考试平顶山市招生管理办公室承办&#xff0c;平顶山市书法家协会、平顶山市美术家协会协办的“颂中国力量 绘美好梦想”——平顶山市中小学生互联网书画大赛…

postcss-pxtorem单位转换插件配置报错Syntax Error: Error: PostCSS plugin postcss-pxtorem requires PostCSS 8. Mig

原因是依赖版本太高,所以执行以下命令进行版本降级,重新启动项目即可 npm i postcss-pxtorem5.0.0在根目录新建postcss.config.js文件中配置 module.exports {plugins: {autoprefixer: {browsers: [Android > 4.0, iOS > 8]},postcss-pxtorem: {rootValue: 37.5,propL…

groovy定义变量获取当前时间_Groovy小记it关键字和IDE报错

在工作中经常写Groovy脚本&#xff0c;由于Groovy与Java的亲戚关系&#xff0c;所以也就直接在「Intellij IDEA」工具上写了&#xff0c;一是因为方便&#xff0c;二是也找不到其他工具了。但是在使用的过程中总会遇到一些兼容性的问题。「Intellij IDEA」对于Groovy的支持并不…

使用git 快速批量创建文件夹和js文件

第一个指令 //创建文件夹mkdir onefile twofile threefile $ mkdir onefile twofile threefile第二个指令 //创建js文件 touch onefile.js twofile.js threefile.js $ touch onefile.js twofile.js threefile.js效果如下

解决报错 This dependency was not found:(这个依赖没有找到)

错误的原因是你这个文件引入或使用了文件资源,但却没有找到 我是因为写样式使用了less,却没有依赖,所以把less删掉或是下less依赖就可以了 <style scoped langless></style>报错全部信息 ERROR Failed to compile with 1 errors 下午10:57:54 This dependency wa…