验证数据是否被改动

有时候保存数据需要做个验证数据是否被改变过,就用到以下的工具函数

 代码例子:

/*  验证数据是否被改动
    参数:object1: 标准数据     object2: 待验证数据
    返回结果:Boolean   true已改 false未改
*/
function validationDataChange(object1, object2) {
    var isChange = false;
    var obj1 = JSON.parse(JSON.stringify(object1))
    var obj2 = JSON.parse(JSON.stringify(object2))
    function recursive(obj1, obj2) {
        for (var key in obj1) {
            var item1 = obj1[key];
            var item2 = obj2[key];
            if ((item1 instanceof Array) && (item2 instanceof Array)) {
                if (item1.length !== item2.length) {
                    isChange = true
                    return
                }
                recursive(item1, item2)
            } else if (typeof item1 !== "object" && item2 === undefined) {
                isChange = true
            } else if (typeof item1 === "object" && item2 === undefined) {
                isChange = true
            } else if (typeof item1 === "object" && typeof item2 === "object") {
                recursive(item1, item2)
            } else if (item1 === undefined && item2) {
                isChange = true
            } else if (item1 !== item2) {
                isChange = true
            }
        }
    }
    recursive(obj1, obj2)
    return isChange
}

var a = { // 标准数据格式
    name: "tom",
    age: 18,
    sex: true,
    config: {
         80,
        background: "red",
        format: {
            fontFamily: "PingFang SC",
            color: "rgba(0, 0, 0, 1)",
            fontSize: "14px"
        }
    }
}
var b = { // 待验证数据
    name: "tom",
    age: 19, // 这里改变了
    sex: true,
    config: {
         80,
        background: "red",
        format: {
            fontFamily: "PingFang SC",
            color: "rgba(0, 0, 0, 1)",
            fontSize: "14px"
        }
    }
}

var c = validationDataChange(a, b)
console.log(c);
原文地址:https://www.cnblogs.com/konghaowei/p/15152659.html