Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function equal(a, b) {
- const typeA = Object.prototype.toString.call(a);
- const typeB = Object.prototype.toString.call(b);
- if (typeA === typeB) {
- if (typeA === '[object Object]') {
- // Object
- let resultNum = 0;
- let keyA = Object.keys(a);
- let keyB = Object.keys(b);
- if (keyA.length !== keyB.length) return false;
- for (let i = 0;i < keyA.length;i++) {
- let targetKey = keyA[i];
- if (equal(b[targetKey], a[targetKey])) {
- resultNum++;
- } else {
- return false;
- }
- }
- return resultNum === keyA.length;
- } else if (typeA === '[object Array]') {
- // Array
- if (a.length !== b.length) return false;
- for (let i = -1, item = a[i];item=a[++i];){
- if (!equal(item, b[i])) {
- return false;
- }
- }
- return true;
- } else {
- // Not Support
- return a === b;
- }
- } else {
- return false;
- }
- }
- let obj1 = { a: [1, '2'], b: 2};
- let obj2 = { b: 2, a: [1, '2']};
- let arr1 = [1, 2, { a: 1, b: 2 }, 9];
- let arr2 = [1, 2, { b: 2, a: 1 }, 9];
- console.log("equal(obj1, obj2)", equal(obj1, obj2));
- console.log("equal(arr1, arr2)", equal(arr1, arr2));
- console.log("equal(obj1, arr1)", equal(obj1, arr1));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement