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