From fb009e25937740f028e8c69ed2ba6e3c8feaf96e Mon Sep 17 00:00:00 2001
From: whychdw <49690745@qq.com>
Date: 星期三, 13 十一月 2019 10:07:35 +0800
Subject: [PATCH] 数据对比逻辑修改

---
 platforms/android/app/src/main/assets/www/js/common_functions.js |  155 +++++++++++++++++++--------------------------------
 1 files changed, 59 insertions(+), 96 deletions(-)

diff --git a/platforms/android/app/src/main/assets/www/js/common_functions.js b/platforms/android/app/src/main/assets/www/js/common_functions.js
index 4a58b54..b2f89eb 100644
--- a/platforms/android/app/src/main/assets/www/js/common_functions.js
+++ b/platforms/android/app/src/main/assets/www/js/common_functions.js
@@ -378,107 +378,70 @@
     return str;
 }
 
-// 瀵规暟鎹繘琛屽鐞�
-var HandleData = function HandleData() {};
-// 澶勭悊鏁版嵁
-HandleData.prototype.handle = function (oldData, newData, keys) {
-    var result = {
-        del: [],
-        add: []
-    };
-    // 娣诲姞琚垹闄ょ殑鏁版嵁
-    this._addDel(result, oldData, newData, keys);
+// 瀵规柊鏃ф暟鎹繘琛屽姣�
+function HandleData() {};
 
-    // 娣诲姞琚坊鍔犵殑鏁版嵁
-    this._addAdd(result, oldData, newData, keys);
-
-    // 鍒犻櫎鏁版嵁
-    this._del(result, oldData, keys);
-
-    // 娣诲姞鏁版嵁
-    this._add(result, oldData, keys);
-};
-// 娣诲姞琚垹闄ょ殑鏁版嵁
-HandleData.prototype._addDel = function (result, oldData, newData, keys) {
-    // 閬嶅巻old鏁版嵁骞跺拰newData瀵规瘮,绛涢�夊嚭闇�瑕佸垹闄ょ殑鏁版嵁
-    for (var i = 0; i < oldData.length; i++) {
-        var _oldData = oldData[i];
-        var exist = this.checkExistObj(_oldData, newData, keys);
-        if (!exist) {
-            result.del.push(_oldData);
-        }
-    }
+// 瀵规柊鏃ф暟鎹繘琛屽姣斿鐞�
+HandleData.prototype.handle = function(oldData, newData, keys) {
+	// 鍓旈櫎鏃ф暟鎹�
+	this.del(oldData, newData, keys);
+	
+	// 娣诲姞鏂版暟鎹�
+	this.add(oldData, newData, keys);
 };
 
-// 娣诲姞琚坊鍔犵殑鏁版嵁
-HandleData.prototype._addAdd = function (result, oldData, newData, keys) {
-    // 閬嶅巻new鏁版嵁鍜宱ld鏁版嵁瀵规瘮锛岀瓫閫夊嚭闇�瑕佹坊鍔犵殑鏁版嵁
-    for (var i = 0; i < newData.length; i++) {
-        var _newData = newData[i];
-        var exist = this.checkExistObj(_newData, oldData, keys);
-        if (!exist) {
-            result.add.push(_newData);
-        }
-    }
+// 娣诲姞鏂版暟鎹�
+HandleData.prototype.add = function(oldData, newData, keys) {
+	// 閬嶅巻鏂版暟鎹�
+	for(var i=0; i<newData.length; i++) {
+		var _newData = newData[i];
+		var isExist = this.checkObjIsExist(_newData, oldData, keys);
+		if(isExist.code == 0) {
+			oldData.push(_newData);
+		}
+	}
 };
 
-// 鍒犻櫎鏁版嵁
-HandleData.prototype._del = function (result, oldData, keys) {
-    // 鍒犻櫎鏁版嵁
-    for (var i = 0; i < result.del.length; i++) {
-        var del = result.del[i];
-        for (var k = 0; k < oldData.length; k++) {
-            var _oldData = oldData[k];
-            var equal = this.checkObjEqual(_oldData, del, keys);
-            if (equal || typeof equal == 'undefined') {
-                oldData.splice(k, 1);
-                break;
-            }
-        }
-    }
+// 鎻愬嚭鏃ф暟鎹�
+HandleData.prototype.del = function(oldData, newData, keys) {
+	// 閬嶅巻鏃ф暟鎹�
+	for(var i=0; i<oldData.length; i++) {
+		var _oldData = oldData[i];
+		var isExist = this.checkObjIsExist(_oldData, newData, keys);
+		if(isExist.code == 0) {
+			oldData.splice(i, 1);
+			i--;
+		}
+	}
 };
 
-// 娣诲姞鏁版嵁
-HandleData.prototype._add = function (result, oldData, keys) {
-    // 娣诲姞鏁版嵁
-    for (var i = 0; i < result.add.length; i++) {
-        var add = result.add[i];
-        oldData.push(add);
-    }
-};
-
-// 妫�娴嬪璞℃槸鍚﹀瓨鍦ㄤ簬瀵硅薄闆嗗悎
-HandleData.prototype.checkExistObj = function (obj, list, keys) {
-    var exist = false;
-    // 閬嶅巻list
-    for (var i = 0; i < list.length; i++) {
-        var _list = list[i];
-        // 閬嶅巻閿�奸泦鍚�
-        var equal = this.checkObjEqual(obj, _list, keys);
-        // 瀵硅薄涓庡璞¢泦鍚堜腑绗琲涓瓑鏁�
-        if (equal) {
-            exist = true;
-            break;
-        }
-    }
-    // 杩斿洖鍐呭
-    return exist;
-};
-
-// 妫�娴嬪璞℃槸鍚︾瓑鏁�(杩斿洖undefined璇存槑keys瀛樺湪闂)
-HandleData.prototype.checkObjEqual = function (obj1, obj2, keys) {
-    // 閬嶅巻閿�奸泦鍚�
-    var equal = true;
-    for (var k = 0; k < keys.length; k++) {
-        var key = keys[k];
-        if (obj1.hasOwnProperty(key) && obj2.hasOwnProperty(key)) {
-            if (obj1[key] != obj2[key]) {
-                equal = false;
-                break;
-            }
-        } else {
-            equal = undefined;
-        }
-    }
-    return equal;
+// 妫�娴嬪璞℃槸鍚﹀瓨鍦ㄤ簬瀵硅薄鏁扮粍涓�
+HandleData.prototype.checkObjIsExist = function(obj, objs, keys) {
+	var result = {
+		code: 0,
+		index: -1,
+		data: {}
+	};
+	// 閬嶅巻鏁扮粍
+	for(var i=0; i<objs.length; i++) {
+		var _objs = objs[i];
+		var equal = true;		// 鐩哥瓑
+		// 閬嶅巻keys
+		for(var k=0; k<keys.length; k++) {
+			var key = keys[k];
+			if(_objs[key] == undefined || _objs[key] != obj[key]) {
+				equal=false;
+				break;
+			}
+		}
+		
+		// 瀛樺湪灞炴�у�间竴鑷寸殑瀵硅薄
+		if(equal) {
+			result.code = 1;
+			result.index = i;
+			result.data = _objs;
+		}
+	}
+	
+	return result;
 };
\ No newline at end of file

--
Gitblit v1.9.1