weixin_41452476 2024-01-24 15:54 采纳率: 27.3%
浏览 27
已结题

js算法11111111111111111

根据idsTwo/中的数据,从numeData找出id相同的数据,保留对应的层级,id没有出现的数据全部删除掉,层级不删除,依旧保留
idsOne也可以依据上面的方法找出对应的层级,将找出的数据保存在data中


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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var numeData = [{
            id: '1',
            name: "我",
            children: [{
                id: '11',
                name: "两个我",
                children: [{
                    id: '111',
                    name: "三个我",
                }, ]
            }, {
                id: '01',
                name: "01我",
                children: [{
                    id: '001',
                    name: "001我",
                }, ]
            }]
        }, {
            id: '2',
            name: "你",
            children: [{
                id: '22',
                name: "两个你",
                children: [{
                    id: '222',
                    name: "三个你",
                }, ]
            }, {
                id: '02',
                name: "02你",
                children: [{
                    id: '002',
                    name: "002你",
                    children: [{
                        id: '0002',
                        name: '0002你'
                    }]
                }, ]
            }]
        }, {
            id: '3',
            name: "他",
            children: [{
                id: '33',
                name: "两个他",
                children: [{
                    id: '333',
                    name: "三个他",
                }, ]
            }, {
                id: '03',
                name: "03他",
                children: [{
                    id: '003',
                    name: "003他",
                    children: [{
                        id: '0003',
                        name: '0003他'
                    }]
                }, ]
            }]
        }]

        var data =[]
        var idsTwo = ['1','111','002','0003','02','001','222']
        var idsOne = ['0002','01','002','003','02','001','222']

        // 根据idsTwo/中的数据,从numeData找出id相同的数据,保留对应的层级,id没有出现的数据全部删除掉,层级不删除,依旧保留
        // idsOne也可以依据上面的方法找出对应的层级,将找出的数据保存在data中
    </script>
</body>

</html>

  • 写回答

21条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-24 15:55
    关注

    引自免费微信小程序:皆我百晓生

    根据您的描述,您希望根据给定的idsTwoidsOne数组,从numeData中找出对应的数据,并保留对应的层级。请查看以下代码示例来实现您的需求:

    var numeData = [{
        id: '1',
        name: "我",
        children: [{
            id: '11',
            name: "两个我",
            children: [{
                id: '111',
                name: "三个我",
            }, ]
        }, {
            id: '01',
            name: "01我",
            children: [{
                id: '001',
                name: "001我",
            }, ]
        }]
    }, {
        id: '2',
        name: "你",
        children: [{
            id: '22',
            name: "两个你",
            children: [{
                id: '222',
                name: "三个你",
            }, ]
        }, {
            id: '02',
            name: "02你",
            children: [{
                id: '002',
                name: "002你",
                children: [{
                    id: '0002',
                    name: '0002你'
                }]
            }, ]
        }]
    }, {
        id: '3',
        name: "他",
        children: [{
            id: '33',
            name: "两个他",
            children: [{
                id: '333',
                name: "三个他",
            }, ]
        }, {
            id: '03',
            name: "03他",
            children: [{
                id: '003',
                name: "003他",
                children: [{
                    id: '0003',
                    name: '0003他'
                }]
            }, ]
        }]
    }];
    
    var data = []
    var idsTwo = ['1', '111', '002', '0003', '02', '001', '222']
    var idsOne = ['0002', '01', '002', '003', '02', '001', '222']
    
    function findDataByIds(ids, arr) {
        for (var i = 0; i < arr.length; i++) {
            var currentItem = arr[i];
            if (ids.includes(currentItem.id)) {
                data.push(currentItem);
                if (Array.isArray(currentItem.children)) {
                    findDataByIds(ids, currentItem.children);
                }
            }
        }
    }
    
    findDataByIds(idsTwo, numeData);
    findDataByIds(idsOne, numeData);
    
    console.log(data);
    

    此代码会根据idsTwoidsOne数组从numeData中找出相应的数据并将其保存在data数组中。以上是一次性给出的完整代码,运行后您可以在控制台中查看data数组的结果。

    评论

报告相同问题?

问题事件

  • 系统已结题 2月1日
  • 修改了问题 1月24日
  • 赞助了问题酬金20元 1月24日
  • 创建了问题 1月24日

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?