通过vuex和js的filter方法计算目标数组的变动部分(新增和删除)

此段代码适用于vue2.x store3.0
作用对象: 数组
用处: 实时监听数组的变化,并计算出,数组变更的两个部分:新增、去除的部分
本人将其理解成一个发布订阅者模式,store数据发布,在此文件中监听store(相当于订阅),观察到数据的变更后,进行数据筛选,从而进行不同的业务处理

/**
 * @author: yuhang
 * @Date: 2021-12-20 13:37:06
 * @description: 根据vuex的新老值计算出新值和旧值
 */
<template>
    <div></div>
</template>

<script>
export default {
    data() {
        return {
            DataList: [],
        };
    },
    watch: {
        DataList: {
            immediate: true,
            deep: true,
            handler(val, preval) {
                this.compareData(val, preval);
            },
        },
    },
    methods: {
        compareData(a, b) {
            let newval = a;
            let oldval = b;
            let needTocreat = [];
            let oldtoDestory = [];
            if (!oldval || !oldval.length) {
                oldval = [];
            }
            if (!newval || !newval.length) {
                newval = [];
            }
            if (oldval && newval) {
            	// 新增的数据(数组)
                needTocreat = newval.filter(m => oldval.findIndex(n => n.id === m.id) === -1);
                // 删除的数据(数组)
                oldtoDestory = oldval.filter(q => newval.findIndex(p => p.id === q.id) === -1);
            }
            this.createMarker(needTocreat);
            this.destoryMarker(oldtoDestory);
        },
        // 新增的
        createMarker(data) {
        },
        // 消失的
        destoryMarker(data) {
        },
    },
};
</script>


版权声明:本文为yh8899abc原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。