美文网首页
一个递归(JavaScript)

一个递归(JavaScript)

作者: 爱楚楚真是太好了 | 来源:发表于2019-06-14 18:29 被阅读0次

递归获取选中/未选中的数据

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>递归获取选中/未选中的数据</title>
</head>
<body>
  <div id="root"></div>
</body>
<script>
const data = [{
    label: 'Component',
    key: '1',
    children: [{
        label: 'Form',
        key: '2',
        selectable: false,
        children: [{
            label: 'Input',
            key: '4',
            children:[{
              label: 'seven',
              key: '7',
              children:[{
                label: 'eight',
                key: '8',
                children:[{
                  label: 'nine',
                  key: '9',
                }]
              }]
            }]
        }, {
            label: 'Select',
            key: '5'
        }]
    }, {
        label: 'Display',
        key: '3',
        children: [{
            label: 'Table',
            key: '6'
        }]
    }]
}];

const keys =  [ '3', '5', '6'];

filterCategoryData = (selectKeys, data, type) => {
    const newData = [];
    data.forEach(item => {
        let obj = {};
        if (item.children && item.children.length > 0) {
            const tempData = this.filterCategoryData(selectKeys, item.children, type);
            obj = {
                ...item,
                children: tempData,
            };
            if (obj.children && obj.children.length > 0) {
                newData.push(obj);
            }
        } else if ( type === "filter" ? !selectKeys.includes(item.key) : selectKeys.includes(item.key)) {
            newData.push(item);
        }
    });
    return newData;
}

const newData = filterCategoryData(keys, data, type = "filter");
console.log('newData===', newData);

</script>
</html>

相关文章

  • 前端算法学习-前篇

    递归 JavaScript中允许函数递归调用,示例: 当一个函数呗递归调用时,递归没有完成,函数的计算结果会被暂时...

  • 前端面试题总结(算法)

    javascript递归遍历所有DOM文档节点 javascript递归遍历所有DOM文档节点 HTTP 方法:G...

  • 21. Merge Two Sorted Lists

    Java Javascript 递归解

  • JavaScript递归函数

    JavaScript 支持函数的递归调用。 所谓递归函数,就是在函数体内调用函数本身。 使用递归函数的一个常见例子...

  • 你可能不知道的递归

    递归 尾递归 CPS trampoline memoize 缓存 本文使用 JavaScript 进行描述。本文简...

  • 一个递归(JavaScript)

    递归获取选中/未选中的数据

  • javascript递归

    递归函数是一个函数通过名字调用自身的情况下构成的。下面是一个经典阶乘函数: 虽然看起来没有问题,但是如果给fact...

  • JavaScript递归

    什么是递归?在函数A中调用函数A自己,就是递归,但是递归要有结束的条件递归------>如果没有结束的条件就是一个...

  • js递归遍历讲解

    JavaScript的递归遍历会经常遇到,适当的运用递归遍历,可以提高代码性质量。 1.某些时候递归能替换for循...

  • 2018-06-06

    JavaScript中的递归 最简单的一句话介绍递归:函数内部自己调用自己 小递归案例: 计算 1+2+3+......

网友评论

      本文标题:一个递归(JavaScript)

      本文链接:https://www.haomeiwen.com/subject/tatmfctx.html