有时候保存数据需要做个验证数据是否被改变过,就用到以下的工具函数
代码例子:
/* 验证数据是否被改动 参数: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);