어떤 이유로, 너무 오래, 최초의 기록 경험, 일부 수치에 대한 작업은 다음 레코드가 더 나은 생각, 우리는 지금, 말을 많이하지 않았다.
이러한 배경 수요가 내가 필요 전과 나열된 항목을 수정 변경, 후 비교하는 양식을 저장, 지금이 폼 양식 항목에 특정 데이터를 변경 한 생각, 내가 양식을 가지고, 양식 객체 등, STR, OBJ, 배열을 가지고있다, 특정 작업을 트리거합니다.
방법은 다음과 같습니다
1 // 对比JSON数据 2 내보내기 기능 equalsWithA (오브젝트 1, object2) { 3 VAR의 changeField = [] (4) 에 대해 ( VAR의 PROPNAME 에서 오브젝트 1) { 도 5 의 경우 (! 오브젝트 1 [PROPNAME] &&! object2 [PROPNAME]) { (6)는 계속 7 } 8 의 경우 (object1.hasOwnProperty (PROPNAME)! = object2.hasOwnProperty (PROPNAME) || 대해서 typeof 오브젝트 1 [PROPNAME!] == 대해서 typeof object2 [PROPNAME]) { 9 changeField.push (PROPNAME) 10 계속 11 } 12 의 경우 (오브젝트 1 [PROPNAME] instanceof를 배열) { 13 일 경우 (! arrayEquals가 (오브젝트 1 [PROPNAME] object2는 [PROPNAME])) { 14 changeField.push (PROPNAME) (15)가 계속 16 } 17 } 다른 경우 (오브젝트 1 [ PROPNAME] instanceof를 &&는 [PROPNAME] object2 개체 instanceof는 개체)를 { (18)가 있는 경우 (! jsonEquals가 (오브젝트 1 [PROPNAME] object2는 [PROPNAME])) { 19 changeField.push (PROPNAME)가 20 계속 21 } 22 } 다른 경우 ( 대해서 typeof 오브젝트 1 [PROPNAME] === '문자열'&& 대해서 typeof object2 [PROPNAME] === '문자열' ) { 23 시도 { 24 VAR의 D1 = ' 25 VAR의 D2 =' 26 의 경우 (PROPNAME .indexOf ( 'ENDTIME')> -1 || propName.indexOf ( '상영')> -1 ) { 27 D1 = formatDate (오브젝트 1 [PROPNAME]) (28) , D2 = formatDate (object2 [PROPNAME]) (29) } 다른 { 30 D1 =오브젝트 1 [PROPNAME] 31 D2 = object2 [PROPNAME] 32 } 33 34 경우 (D1의 &&의 D2) { 35 의 경우 (D1! = D2) { 36 // 日期类型 37 changeField.push (PROPNAME) (38) } (39)는 계속 40 } 다른 경우 (오브젝트 1 [PROPNAME]! = object2 [PROPNAME]) { 41 changeField.push (PROPNAME) (42)가 계속 43 } 44 } 캐치(E)} { 45 } 다른 경우 (!는 오브젝트 1 [PROPNAME] = [PROPNAME] object2) { 46 changeField.push (PROPNAME) (47) 를 계속 48 } 49 } 50 반환 changeField 51 }; 52 함수 arrayEquals (오브젝트 1, object2) { 53 의 경우 (object1.length! = object2.length) { 54 반환 거짓 55 } 56 object1.sort () 57 object2.sort () 58 대 ( VAR난 = 0; 난 object1.length를 <; 난 ++ ) { 59 의 경우 ( 대해서 typeof 오브젝트 1 [I]! == 대해서 typeof object2 [I]) { 60 반환 거짓 (61) } (62) 의 경우 (오브젝트 1 [I] instanceof를 배열 && object2 [I] instanceof를 배열) { 63 의 경우 (! arrayEquals ( 오브젝트 1 [I] object2 [I])) { 64 반환 거짓 65 } 66 } 다른 경우 (isJson (오브젝트 1 [I]) && isJson (object2 [I])) { 67 의 경우 (!jsonEquals (오브젝트 1 [I] object2 [I])) { 68 반환 거짓 69 } 70 } 다른 경우 (오브젝트 1 [I] =! object2 [I]) { 71 반환 거짓 72 } 73 } 74 반환 사실 75 }; 76 함수 jsonEquals (오브젝트 1, object2) { 77 대 ( VAR의 PROPNAME 에서 오브젝트 1) { 78 경우 (! 오브젝트 1 [PROPNAME] &&! object2 [PROPNAME]) { 79 계속 80 } 81 의 경우 (object1.hasOwnProperty (PROPNAME)! = object2.hasOwnProperty (PROPNAME) || 대해서 typeof 오브젝트 1 [PROPNAME!] == 대해서 typeof object2 [PROPNAME]) { 82 반환 거짓 (83) } (84) 의 경우 (오브젝트 1 [PROPNAME] instanceof를 배열) { 85 의 경우 (! arrayEquals (오브젝트 1 [PROPNAME] object2 [PROPNAME])) { 반환 거짓 } 86 } 다른 경우 (isJson (오브젝트 1 [PROPNAME])) { 87 의 경우 (! jsonEquals (오브젝트 1 [PROPNAME] object2 [PROPNAME] )) { 반환 거짓 } (88) } 다른 경우 ( 대해서 typeof 오브젝트 1 [PROPNAME] === '문자열'&& 대해서 typeof object2 [PROPNAME] === '문자열' ) { 89 시도 { 90 VAR의 D1 = ' 91 VAR의 D2 =' 92 의 경우 (propName.indexOf ( 'ENDTIME')> -1 || propName.indexOf ( '상영')> -1 ) { 93 D1 = formatDate (오브젝트 1 [PROPNAME]) (94) , D2 = formatDate (object2 [PROPNAME]) 95 } 다른 { 96 D1 = 오브젝트 1 [PROPNAME] 97 D2 = object2 [PROPNAME] 98 } 99 의 경우 (D1 && D2 && D1! = D2) { 100 // 日期类型 101 창 거짓 102 } 다른 경우 (오브젝트 1은 [PROPNAME]! = object2 [PROPNAME]) { 103 창 거짓 104 } 105 } 캐치 (E)} { 106 } 다른 경우 (오브젝트 1 [PROPNAME]! = object2 [PROPNAME]) { 107 창 거짓 108 } 109 } 110 복귀 사실 (111) }; 112 함수 isJson (OBJ) { 113 VAR의 isjson = 대해서 typeof (OBJ) === '물체'&& Object.prototype.toString.call (OBJ) .toLowerCase () == '[대상 객체] &&! obj.length 114 창 isjson 115 }
메소드를 호출
VAR arrChange = equalsWithA (oldFormData, newFormData);