UNPKG

2.18 kBJavaScriptView Raw
1import _typeof from "@babel/runtime/helpers/esm/typeof";
2export function dataToArray(vars) {
3 if (!vars && vars !== 0) {
4 return [];
5 }
6
7 if (Array.isArray(vars)) {
8 return vars;
9 }
10
11 return [vars];
12}
13
14function deepEql(a, b) {
15 if (!a || !b) {
16 return false;
17 }
18
19 var $a = Object.keys(a);
20 var $b = Object.keys(b);
21
22 if ($a.length && $b.length && $a.length === $b.length) {
23 return !$a.some(function (key) {
24 var aa = a[key];
25 var bb = b[key];
26
27 if (Array.isArray(aa) && Array.isArray(bb)) {
28 var aaa = aa.join();
29 var bbb = bb.join();
30
31 if (aaa === bbb && !aaa.match(/\[object object\]/gi)) {
32 aa = aaa;
33 bb = bbb;
34 }
35 }
36
37 return aa !== bb;
38 });
39 }
40
41 return false;
42}
43
44export function objectEqual(obj1, obj2) {
45 if (obj1 === obj2 || deepEql(obj1, obj2)) {
46 return true;
47 }
48
49 if (!obj1 || !obj2 || Object.keys(obj1).length !== Object.keys(obj2).length) {
50 return false;
51 } // animation 写在标签上的进行判断是否相等, 判断每个参数有没有 function;
52
53
54 var equalBool = true;
55
56 var setEqualBool = function setEqualBool($a, $b) {
57 var objA = Object.keys($a).length > Object.keys($b).length ? $a : $b;
58 var objB = Object.keys($a).length > Object.keys($b).length ? $b : $a;
59 Object.keys(objA).forEach(function (key) {
60 // 如果前面有参数匹配不相同则直接返回;
61 if (!equalBool) {
62 return;
63 }
64
65 if (!(key in objB)) {
66 equalBool = false;
67 }
68
69 if (_typeof(objA[key]) === 'object' && _typeof(objB[key]) === 'object') {
70 equalBool = objectEqual(objA[key], objB[key]);
71 } else if (typeof objA[key] === 'function' && typeof objB[key] === 'function') {
72 if (objA[key].toString().replace(/\s+/g, '') !== objB[key].toString().replace(/\s+/g, '')) {
73 equalBool = false;
74 }
75 } else if (objA[key] !== objB[key]) {
76 equalBool = false;
77 }
78 });
79 };
80
81 if (Array.isArray(obj1) && Array.isArray(obj2)) {
82 obj1.forEach(function (item, i) {
83 setEqualBool(item, obj2[i]);
84 });
85 } else {
86 setEqualBool(obj1, obj2);
87 }
88
89 return equalBool;
90}
\No newline at end of file