阅读 61

js 数组删除与这条数据相关的所有数据

在开发过程中,后台同事给出的树状数据是列表形式的数据。

当要删除此条数据时,需要删除掉此数据下所有的子级数据。

效果图如下:

 

删除id为11后的数据:

 

 具体代码如下:

复制代码

<!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">
    <script src="./vue.js"></script>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <!-- 引入组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <title>Document</title></head><body>

    <div id="app">
        <ul>
            <li v-for="item in listData" :key="item.id" @click="deleteItem(item.id)">id是{{item.id}}---pid是{{item.pid}}</li>
        </ul>
    </div></body><script type="text/javascript">
    var app = new Vue({
        el: '#app',
        data: {
            listData: [{
                name: '父级1',
                id: '1',
                pid: ''
            }, {
                name: '父级11',
                id: '11',
                pid: '1'
            }, {
                name: '父级12',
                id: '12',
                pid: '1'
            }, {
                name: '父级13',
                id: '13',
                pid: '1'
            }, {
                name: '父级111',
                id: '111',
                pid: '11'
            }, {
                name: '子级1111',
                id: '1111',
                pid: '111'
            }, {
                name: '子级1112',
                id: '1112',
                pid: '111'
            }, {
                name: '父级112',
                id: '112',
                pid: '11'
            }],
            children: {}
        },
        mounted: function() {            this.updateData()
        },
        methods: {
            deleteItem(id) {                if (this.children[id]) {                    this.children[id].forEach(this.deleteItem)
                }                var index = this.listData.findIndex(i => i.id === id);                if (index >= 0)                    this.listData.splice(index, 1);
            },
            updateData() {                var children = {};                this.listData.forEach(function(item) {                    if (item.pid)
                        children[item.pid] = (children[item.pid] || []).concat(item.id);
                });                this.children = children;
            }
        }
    })</script></html>

复制代码


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐