diff --git a/README.md b/README.md index 651f36c..3c2ec58 100644 --- a/README.md +++ b/README.md @@ -2,83 +2,107 @@ > This is a Javascript library to check two objects whether equal (includes type), object can be array/string/number/JSON/function, etc. - - ## Install - npm - ``` sh + ```sh npm install check-equal --save ``` - yarn - ``` sh + ```sh yarn add check-equal --save ``` +## Change Logs +- v1.0.0 - v1.0.3: First published version, it can be used in frontend +- v1.0.4 - v1.0.5: Updated webpack config, now it can be used in frontend and backend ## Usage - Import -- ``` javascript - import {checkEqual} from 'check-equal' +- ```javascript + import { checkEqual } from 'check-equal' ``` - Require ```javascript - const {checkEqual} = require('check-equal') + const { checkEqual } = require('check-equal') ``` - - ## Example ```javascript -//Check two numbers -checkEqual(1, 1); //true -checkEqual(1, 2); //false -checkEqual(1.2, 1.2); //true +//Check two numbers + +checkEqual(1, 1) //true + +checkEqual(1, 2) //false + +checkEqual(1.2, 1.2) //true //Check two strings -checkEqual('1', '1'); //true -checkEqual('1', '2'); //false -checkEqual('Tom', 'Jerry'); //false + +checkEqual('1', '1') //true + +checkEqual('1', '2') //false + +checkEqual('Tom', 'Jerry') //false //Check different types -checkEqual('1', 1); //false -checkEqual('false', false); //false + +checkEqual('1', 1) //false + +checkEqual('false', false) //false //Check two booleans -checkEqual(true, true); //true -checkEqual(true, false); //false + +checkEqual(true, true) //true + +checkEqual(true, false) //false //Check two arrays (will sort array items automatically, ignore the array which has different types) -checkEqual([1, 2, 3], [1, 2, 3]); //true -checkEqual([1, 2, 3], [3, 1, 2]); //true -checkEqual([1, 2, 3], [1, 2]); //false (different length) -checkEqual(['a', 'b', 'c'], ['a', 'b', 'c']); //true -checkEqual(['a', 'b', 'c'], ['b', 'c', 'a']); //true -checkEqual(['a', 'b', 'c'], ['a', 'B', 'c']); //false + +checkEqual([1, 2, 3], [1, 2, 3]) //true + +checkEqual([1, 2, 3], [3, 1, 2]) //true + +checkEqual([1, 2, 3], [1, 2]) //false (different length) + +checkEqual(['a', 'b', 'c'], ['a', 'b', 'c']) //true + +checkEqual(['a', 'b', 'c'], ['b', 'c', 'a']) //true + +checkEqual(['a', 'b', 'c'], ['a', 'B', 'c']) //false //Check two Objects + checkEqual( - {a: '1', b: 2, c: false, d:[1, 3, 5, 7], e:{x: 'x', y: 'y'}}, - {a: '1', b: 2, c: false, d:[1, 3, 5, 7], e:{x: 'x', y: 'y'}} -); //true + { a: '1', b: 2, c: false, d: [1, 3, 5, 7], e: { x: 'x', y: 'y' } }, + + { a: '1', b: 2, c: false, d: [1, 3, 5, 7], e: { x: 'x', y: 'y' } } +) //true + checkEqual( - {a: '1', b: 2, c: false, d:[3, 7, 1, 5]}, - {a: '1', b: 2, c: false, d:[1, 3, 5, 7]} -); //true + { a: '1', b: 2, c: false, d: [3, 7, 1, 5] }, + + { a: '1', b: 2, c: false, d: [1, 3, 5, 7] } +) //true + checkEqual( - {a: '1', b: 2, c: false, d:[1, 3, 5, 7], e:{x: 'x', y: 'y', z: 'z'}}, - {a: '1', b: 2, c: false, d:[1, 3, 5, 7], e:{x: 'x', y: 'y'}} -); //false -checkEqual({a: '2', b: 2, c: false}, {a: '1', b: 2, c: false}); //false -checkEqual({a: '1', b: 2, c: true}, {a: '1', b: 2, c: false}); //false -checkEqual({a: '1', b: 0, c: false}, {a: '1', b: 2, c: false}); //false -``` \ No newline at end of file + { a: '1', b: 2, c: false, d: [1, 3, 5, 7], e: { x: 'x', y: 'y', z: 'z' } }, + + { a: '1', b: 2, c: false, d: [1, 3, 5, 7], e: { x: 'x', y: 'y' } } +) //false + +checkEqual({ a: '2', b: 2, c: false }, { a: '1', b: 2, c: false }) //false + +checkEqual({ a: '1', b: 2, c: true }, { a: '1', b: 2, c: false }) //false + +checkEqual({ a: '1', b: 0, c: false }, { a: '1', b: 2, c: false }) //false +``` diff --git a/index.js b/index.js index 9eb14f8..a7f04a5 100644 --- a/index.js +++ b/index.js @@ -1,195 +1 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["index"] = factory(); - else - root["xxx-components"] = root["xxx-components"] || {}, root["xxx-components"]["index"] = factory(); -})(window, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./CheckEqual.js"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./CheckEqual.js": -/*!***********************!*\ - !*** ./CheckEqual.js ***! - \***********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { - return typeof obj === "undefined" ? "undefined" : _typeof2(obj); -} : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof2(obj); -}; - -var checkEqual = exports.checkEqual = function checkEqual(objA, objB) { - if (!objA || !objB) return objA === objB; - - if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== (typeof objB === 'undefined' ? 'undefined' : _typeof(objB))) return false; - - if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) === 'object') { - var _objectAIsArray = true, - _objectBIsArray = true; - - if (!objA.hasOwnProperty('length')) _objectAIsArray = false; - if (!objB.hasOwnProperty('length')) _objectBIsArray = false; - - if (_objectAIsArray !== _objectBIsArray) return false; - - if (_objectAIsArray && _objectBIsArray) { - return checkArrayEqual(objA, objB); - } else { - return checkObjectEqual(objA, objB); - } - } else { - return objA === objB; - } -}; - -var checkArrayEqual = function checkArrayEqual(arrA, arrB) { - if (arrA.length !== arrB.length) return false; - var _equal = true; - - sortArray(arrA); - sortArray(arrB); - for (var i = 0, l = arrA.length; i < l; i++) { - if (!checkEqual(arrA[i], arrB[i])) { - _equal = false; - break; - } - } - return _equal; -}; - -var checkObjectEqual = function checkObjectEqual(objA, objB) { - var _keysA = Object.keys(objA), - _keysB = Object.keys(objB); - - if (_keysA.length !== _keysB.length) return false; - var _equal = true; - _keysA.forEach(function (key) { - if (!checkEqual(objA[key], objB[key])) { - _equal = false; - } - }); - return _equal; -}; - -var sortArray = function sortArray(arr) { - arr.sort(function (a, b) { - if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) !== (typeof b === 'undefined' ? 'undefined' : _typeof(b))) return 0; - - if (typeof a === 'number') return a - b; - if (typeof a === 'string') { - var _a = a.toUpperCase(), - _b = b.toUpperCase(); - if (_a < _b) return -1; - if (_a > _b) return 1; - return 0; - } - - return 0; - }); -}; - -/***/ }) - -/******/ }); -}); -//# sourceMappingURL=index.js.map \ No newline at end of file +module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=t.checkEqual=function(e,t){if(!e||!t)return e===t;if((void 0===e?"undefined":n(e))!==(void 0===t?"undefined":n(t)))return!1;if("object"===(void 0===e?"undefined":n(e))){var r=!0,o=!0;return e.hasOwnProperty("length")||(r=!1),t.hasOwnProperty("length")||(o=!1),r===o&&(r&&o?u(e,t):f(e,t))}return e===t},u=function(e,t){if(e.length!==t.length)return!1;var r=!0;i(e),i(t);for(var n=0,u=e.length;no?1:0}return 0})}}]); \ No newline at end of file diff --git a/index.js.map b/index.js.map deleted file mode 100644 index bc89c08..0000000 --- a/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://xxx-components.[name]/webpack/universalModuleDefinition","webpack://xxx-components.[name]/webpack/bootstrap","webpack://xxx-components.[name]/./CheckEqual.js"],"names":["checkEqual","objA","_objectAIsArray","_objectBIsArray","objB","checkArrayEqual","checkObjectEqual","arrA","arrB","_equal","sortArray","i","l","_keysA","Object","_keysB","arr","a","_a","_b","b"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxEO,IAAMA,kCAAa,SAAbA,UAAa,aAAgB;AAExC,MAAI,SAAS,CAAb,MAAoB,OAAOC,SAAP;;AAEpB,MAAI,qHAAJ,IAAI,EAAJ,EAAiC;;AAEjC,MAAI,gEAAJ,UAA8B;AAC5B,QAAIC,kBAAJ;AAAA,QACEC,kBADF;;AAGA,QAAI,CAACF,oBAAL,QAAKA,CAAL,EAAoCC;AACpC,QAAI,CAACE,oBAAL,QAAKA,CAAL,EAAoCD;;AAEpC,QAAID,oBAAJ,iBAAyC;;AAEzC,QAAIA,mBAAJ,iBAAwC;AACtC,aAAOG,sBAAP,IAAOA,CAAP;AADF,WAEO;AAEL,aAAOC,uBAAP,IAAOA,CAAP;AACD;AAdH,SAeO;AACL,WAAOL,SAAP;AACD;AAvBI;;AAkCP,IAAMI,kBAAkB,SAAlBA,eAAkB,aAAgB;AAEtC,MAAIE,gBAAgBC,KAApB,QAAiC;AACjC,MAAIC,SAAJ;;AAEAC;AACAA;AACA,OAAK,IAAIC,IAAJ,GAAWC,IAAIL,KAApB,QAAiCI,IAAjC,QAA6C;AAC3C,QAAI,CAACX,WAAWO,KAAXP,CAAWO,CAAXP,EAAoBQ,KAAzB,CAAyBA,CAApBR,CAAL,EAAmC;AACjCS;AACA;AACD;AACF;AACD;AAbF;;AAwBA,IAAMH,mBAAmB,SAAnBA,gBAAmB,aAAgB;AACvC,MAAIO,SAASC,YAAb,IAAaA,CAAb;AAAA,MACEC,SAASD,YADX,IACWA,CADX;;AAGA,MAAID,kBAAkBE,OAAtB,QAAqC;AACrC,MAAIN,SAAJ;AACAI,iBAAe,eAAO;AAEpB,QAAI,CAACb,WAAWC,KAAXD,GAAWC,CAAXD,EAAsBI,KAA3B,GAA2BA,CAAtBJ,CAAL,EAAuC;AACrCS;AACD;AAJHI;AAMA;AAZF;;AAqBA,IAAMH,YAAY,SAAZA,SAAY,MAAO;AACvBM,WAAS,gBAAU;AAEjB,QAAI,4GAAJ,CAAI,EAAJ,EAA2B;;AAE3B,QAAI,aAAJ,UAA2B,OAAOC,IAAP;AAC3B,QAAI,aAAJ,UAA2B;AACzB,UAAIC,KAAKD,EAAT,WAASA,EAAT;AAAA,UACEE,KAAKC,EADP,WACOA,EADP;AAEA,UAAIF,KAAJ,IAAa,OAAO,CAAP;AACb,UAAIA,KAAJ,IAAa;AACb;AACD;;AAED;AAbFF;AADF,E","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"index\"] = factory();\n\telse\n\t\troot[\"xxx-components\"] = root[\"xxx-components\"] || {}, root[\"xxx-components\"][\"index\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./CheckEqual.js\");\n","//#region Check two objects are equal or not, includes type\n//these three function below are all recursive function\n/**\n * @description Check two objects are equal or not, includes type\n * @param {String|Number|Array|JSON} objA\n * @param {String|Number|Array|JSON} objB\n * @returns {Boolean} equal or not\n * @author Janden Ma\n * @version 1.0.0\n */\nexport const checkEqual = (objA, objB) => {\n //if either of A and B is empty or undefined, return objA===objB\n if (!objA || !objB) return objA === objB\n //if type of A isn't equal type of B, needn't compare more and return false\n if (typeof objA !== typeof objB) return false\n //if types of A and B are object\n if (typeof objA === 'object') {\n let _objectAIsArray = true,\n _objectBIsArray = true\n //if obj has length property, it means that it is an array\n if (!objA.hasOwnProperty('length')) _objectAIsArray = false\n if (!objB.hasOwnProperty('length')) _objectBIsArray = false\n //if _objectAIsArray isn't equal _objectBIsArray, it means one of them is Array, another is Object\n if (_objectAIsArray !== _objectBIsArray) return false\n //if all of them are array\n if (_objectAIsArray && _objectBIsArray) {\n return checkArrayEqual(objA, objB)\n } else {\n //else all of them are object\n return checkObjectEqual(objA, objB)\n }\n } else {\n return objA === objB\n }\n}\n\n/**\n * @description Check two Arrays are equal or not\n * @param {Array} arrA\n * @param {Array} arrB\n * @returns {Boolean} equal or not\n * @author Janden Ma\n * @version 1.0.0\n */\nconst checkArrayEqual = (arrA, arrB) => {\n //if the length of arrays are different, needn't compare more and return false\n if (arrA.length !== arrB.length) return false\n let _equal = true\n //sort array first\n sortArray(arrA)\n sortArray(arrB)\n for (let i = 0, l = arrA.length; i < l; i++) {\n if (!checkEqual(arrA[i], arrB[i])) {\n _equal = false\n break\n }\n }\n return _equal\n}\n\n/**\n * @description Check two Objects are equal or not\n * @param {Object|JSON} objA\n * @param {Object|JSON} objB\n * @returns {Boolean} equal or not\n * @author Janden Ma\n * @version 1.0.0\n */\nconst checkObjectEqual = (objA, objB) => {\n let _keysA = Object.keys(objA),\n _keysB = Object.keys(objB)\n //if the length of Object keys are different, needn't compare more and return false\n if (_keysA.length !== _keysB.length) return false\n let _equal = true\n _keysA.forEach(key => {\n //if key in objA is not in objB, CheckEqual will return false\n if (!checkEqual(objA[key], objB[key])) {\n _equal = false\n }\n })\n return _equal\n}\n\n/**\n * @description sort the array\n * @param {Array} arr the array which needs to be sorted\n * @author Janden Ma\n * @version 1.0.0\n */\nconst sortArray = arr => {\n arr.sort((a, b) => {\n //if type of neighboring items in array are different, needn't sort\n if (typeof a !== typeof b) return 0\n //if type of items in array are number or string, sort ascending\n if (typeof a === 'number') return a - b\n if (typeof a === 'string') {\n let _a = a.toUpperCase(),\n _b = b.toUpperCase()\n if (_a < _b) return -1\n if (_a > _b) return 1\n return 0\n }\n //other types of neighboring items in array, needn't sort\n return 0\n })\n}\n//#endregion\n\n"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 2affb14..fd88e62 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,7 +2,7 @@ const path = require('path') // wenpack configuration module.exports = { - devtool: 'source-map', + // devtool: 'source-map', entry: { index: './CheckEqual.js' }, @@ -19,7 +19,6 @@ module.exports = { output: { path: path.resolve(__dirname), filename: 'index.js', - library: ['xxx-components', '[name]'], - libraryTarget: 'umd' + libraryTarget: 'commonjs2' } }