utiller 1.0.295 → 1.0.297

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2029,6 +2029,33 @@ var Utiller = /*#__PURE__*/function () {
2029
2029
  })();
2030
2030
  }
2031
2031
 
2032
+ /**
2033
+ * Merge multiple arrays of objects based on a specific identifier key.
2034
+ * If objects have the same identifier, they will be merged,
2035
+ * with properties from later arrays overwriting earlier ones.
2036
+ *
2037
+ * const list1 = [{ id: '123', name: 'david' }];
2038
+ * const list2 = [{ id: '123', age: 13 }];
2039
+ * const list3 = [{ id: '456', name: 'alice' }];
2040
+ * console.log(mergeArrayBy('id', list1, list2, list3)); //[ { href: '123', name: 'david', age: 13 },{ href: '456', name: 'alice' } ]
2041
+ *
2042
+ * @param {string} identifier - The object property used to identify and merge items. Default is 'id'.
2043
+ * @param {...Array<Object>} array - Multiple arrays containing objects to merge.
2044
+ * @returns {Array<Object>} A new array with merged objects based on the identifier.
2045
+ */
2046
+ }, {
2047
+ key: "mergeArrayBy",
2048
+ value: function mergeArrayBy() {
2049
+ var identifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "id";
2050
+ for (var _len22 = arguments.length, array = new Array(_len22 > 1 ? _len22 - 1 : 0), _key26 = 1; _key26 < _len22; _key26++) {
2051
+ array[_key26 - 1] = arguments[_key26];
2052
+ }
2053
+ return Object.values(array.flat().reduce(function (acc, item) {
2054
+ if (item[identifier]) acc[item[identifier]] = _objectSpread(_objectSpread({}, acc[item[identifier]] || {}), item);
2055
+ return acc;
2056
+ }, {}));
2057
+ }
2058
+
2032
2059
  /**
2033
2060
  * rootName : /free_marker/src/exam/web
2034
2061
  * pathName : /free_marker/src/exam/web/src/base/AlertDialog.js
@@ -2301,8 +2328,8 @@ var Utiller = /*#__PURE__*/function () {
2301
2328
  key: "toObjectMap",
2302
2329
  value: function toObjectMap(array) {
2303
2330
  var newbies = [];
2304
- for (var _len22 = arguments.length, rules = new Array(_len22 > 1 ? _len22 - 1 : 0), _key26 = 1; _key26 < _len22; _key26++) {
2305
- rules[_key26 - 1] = arguments[_key26];
2331
+ for (var _len23 = arguments.length, rules = new Array(_len23 > 1 ? _len23 - 1 : 0), _key27 = 1; _key27 < _len23; _key27++) {
2332
+ rules[_key27 - 1] = arguments[_key27];
2306
2333
  }
2307
2334
  var _iterator9 = _createForOfIteratorHelper(array),
2308
2335
  _step9;
@@ -2347,8 +2374,8 @@ var Utiller = /*#__PURE__*/function () {
2347
2374
  }, {
2348
2375
  key: "exeAll",
2349
2376
  value: function exeAll(collection) {
2350
- for (var _len23 = arguments.length, funcs = new Array(_len23 > 1 ? _len23 - 1 : 0), _key27 = 1; _key27 < _len23; _key27++) {
2351
- funcs[_key27 - 1] = arguments[_key27];
2377
+ for (var _len24 = arguments.length, funcs = new Array(_len24 > 1 ? _len24 - 1 : 0), _key28 = 1; _key28 < _len24; _key28++) {
2378
+ funcs[_key28 - 1] = arguments[_key28];
2352
2379
  }
2353
2380
  if (_lodash["default"].isArray(collection)) {
2354
2381
  var _iterator11 = _createForOfIteratorHelper(collection),
@@ -2403,9 +2430,9 @@ var Utiller = /*#__PURE__*/function () {
2403
2430
  return true;
2404
2431
  };
2405
2432
  var collection = {};
2406
- for (var _key28 in major) {
2407
- if (predicate(major, minor, _key28)) {
2408
- collection[_key28] = major[_key28];
2433
+ for (var _key29 in major) {
2434
+ if (predicate(major, minor, _key29)) {
2435
+ collection[_key29] = major[_key29];
2409
2436
  }
2410
2437
  }
2411
2438
  return collection;
@@ -2452,8 +2479,8 @@ var Utiller = /*#__PURE__*/function () {
2452
2479
  key: "isObjectContainAndEqual",
2453
2480
  value: function isObjectContainAndEqual(targetObject, mainObject) {
2454
2481
  var equal = true;
2455
- for (var _key29 in targetObject) {
2456
- if (mainObject[_key29] === undefined || mainObject[_key29] !== targetObject[_key29]) {
2482
+ for (var _key30 in targetObject) {
2483
+ if (mainObject[_key30] === undefined || mainObject[_key30] !== targetObject[_key30]) {
2457
2484
  equal = false;
2458
2485
  break;
2459
2486
  }
@@ -2531,8 +2558,8 @@ var Utiller = /*#__PURE__*/function () {
2531
2558
  }, {
2532
2559
  key: "getStateOfStringContainsSign",
2533
2560
  value: function getStateOfStringContainsSign(string) {
2534
- for (var _len24 = arguments.length, signs = new Array(_len24 > 1 ? _len24 - 1 : 0), _key30 = 1; _key30 < _len24; _key30++) {
2535
- signs[_key30 - 1] = arguments[_key30];
2561
+ for (var _len25 = arguments.length, signs = new Array(_len25 > 1 ? _len25 - 1 : 0), _key31 = 1; _key31 < _len25; _key31++) {
2562
+ signs[_key31 - 1] = arguments[_key31];
2536
2563
  }
2537
2564
  for (var _i14 = 0, _signs = signs; _i14 < _signs.length; _i14++) {
2538
2565
  var sign = _signs[_i14];
@@ -2554,8 +2581,8 @@ var Utiller = /*#__PURE__*/function () {
2554
2581
  key: "constraintOfParam",
2555
2582
  value: function constraintOfParam(collection, type) {
2556
2583
  var result = false;
2557
- for (var _len25 = arguments.length, others = new Array(_len25 > 2 ? _len25 - 2 : 0), _key31 = 2; _key31 < _len25; _key31++) {
2558
- others[_key31 - 2] = arguments[_key31];
2584
+ for (var _len26 = arguments.length, others = new Array(_len26 > 2 ? _len26 - 2 : 0), _key32 = 2; _key32 < _len26; _key32++) {
2585
+ others[_key32 - 2] = arguments[_key32];
2559
2586
  }
2560
2587
  var validOfOthersCondition = _lodash["default"].isEmpty(others) ? true : this.and.apply(this, (0, _toConsumableArray2["default"])(others.map(function (each) {
2561
2588
  return each.logic;
@@ -2704,8 +2731,8 @@ var Utiller = /*#__PURE__*/function () {
2704
2731
  _step15;
2705
2732
  try {
2706
2733
  for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
2707
- var _key32 = _step15.value;
2708
- checkValue += "".concat(_key32, "=").concat(clone[_key32], "&");
2734
+ var _key33 = _step15.value;
2735
+ checkValue += "".concat(_key33, "=").concat(clone[_key33], "&");
2709
2736
  }
2710
2737
  } catch (err) {
2711
2738
  _iterator15.e(err);
@@ -2799,10 +2826,10 @@ var Utiller = /*#__PURE__*/function () {
2799
2826
  throw new _exceptioner["default"](9999, "".concat(idOfError, " ATTRIBUTE:'").concat(rule, "' is not Exist"));
2800
2827
  }
2801
2828
  } else if (_lodash["default"].isObject(rule)) {
2802
- var _key33 = this.getObjectKey(rule);
2829
+ var _key34 = this.getObjectKey(rule);
2803
2830
  var predicate = this.getObjectValue(rule);
2804
- if (!predicate(content[_key33])) {
2805
- throw new _exceptioner["default"](9999, "".concat(idOfError, " ATTRIBUTE:'").concat(_key33, "' is not valid of custom rule"));
2831
+ if (!predicate(content[_key34])) {
2832
+ throw new _exceptioner["default"](9999, "".concat(idOfError, " ATTRIBUTE:'").concat(_key34, "' is not valid of custom rule"));
2806
2833
  }
2807
2834
  }
2808
2835
  }
@@ -2836,11 +2863,11 @@ var Utiller = /*#__PURE__*/function () {
2836
2863
  try {
2837
2864
  for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
2838
2865
  var item = _step18.value;
2839
- var _key35 = item[keyOfId];
2840
- if (obj[_key35] !== undefined) {
2841
- obj[_key35] = obj[_key35] + item[keyOfSum];
2866
+ var _key36 = item[keyOfId];
2867
+ if (obj[_key36] !== undefined) {
2868
+ obj[_key36] = obj[_key36] + item[keyOfSum];
2842
2869
  } else {
2843
- obj[_key35] = item[keyOfSum];
2870
+ obj[_key36] = item[keyOfSum];
2844
2871
  }
2845
2872
  }
2846
2873
  } catch (err) {
@@ -2849,10 +2876,10 @@ var Utiller = /*#__PURE__*/function () {
2849
2876
  _iterator18.f();
2850
2877
  }
2851
2878
  var items = [];
2852
- for (var _key34 in obj) {
2879
+ for (var _key35 in obj) {
2853
2880
  var _obj = {};
2854
- _obj[keyOfId] = _key34;
2855
- _obj[keyOfSum] = obj[_key34];
2881
+ _obj[keyOfId] = _key35;
2882
+ _obj[keyOfSum] = obj[_key35];
2856
2883
  items.push(_obj);
2857
2884
  }
2858
2885
  return items;
@@ -3201,9 +3228,9 @@ var Utiller = /*#__PURE__*/function () {
3201
3228
  var _fetchElementAttributes = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(dom, stringOfTrait) {
3202
3229
  var defaultValue,
3203
3230
  element,
3204
- _len26,
3231
+ _len27,
3205
3232
  attributes,
3206
- _key36,
3233
+ _key37,
3207
3234
  _args10 = arguments;
3208
3235
  return _regenerator["default"].wrap(function _callee9$(_context10) {
3209
3236
  while (1) switch (_context10.prev = _context10.next) {
@@ -3217,8 +3244,8 @@ var Utiller = /*#__PURE__*/function () {
3217
3244
  _context10.next = 16;
3218
3245
  break;
3219
3246
  }
3220
- for (_len26 = _args10.length, attributes = new Array(_len26 > 3 ? _len26 - 3 : 0), _key36 = 3; _key36 < _len26; _key36++) {
3221
- attributes[_key36 - 3] = _args10[_key36];
3247
+ for (_len27 = _args10.length, attributes = new Array(_len27 > 3 ? _len27 - 3 : 0), _key37 = 3; _key37 < _len27; _key37++) {
3248
+ attributes[_key37 - 3] = _args10[_key37];
3222
3249
  }
3223
3250
  _context10.prev = 6;
3224
3251
  _context10.next = 9;
@@ -3259,9 +3286,9 @@ var Utiller = /*#__PURE__*/function () {
3259
3286
  value: (function () {
3260
3287
  var _writeElementAttributes = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(dom, stringOfTrait) {
3261
3288
  var element,
3262
- _len27,
3289
+ _len28,
3263
3290
  attributes,
3264
- _key37,
3291
+ _key38,
3265
3292
  _args11 = arguments;
3266
3293
  return _regenerator["default"].wrap(function _callee10$(_context11) {
3267
3294
  while (1) switch (_context11.prev = _context11.next) {
@@ -3270,8 +3297,8 @@ var Utiller = /*#__PURE__*/function () {
3270
3297
  return dom.$(stringOfTrait);
3271
3298
  case 2:
3272
3299
  element = _context11.sent;
3273
- for (_len27 = _args11.length, attributes = new Array(_len27 > 2 ? _len27 - 2 : 0), _key37 = 2; _key37 < _len27; _key37++) {
3274
- attributes[_key37 - 2] = _args11[_key37];
3300
+ for (_len28 = _args11.length, attributes = new Array(_len28 > 2 ? _len28 - 2 : 0), _key38 = 2; _key38 < _len28; _key38++) {
3301
+ attributes[_key38 - 2] = _args11[_key38];
3275
3302
  }
3276
3303
  if (this.isUndefinedNullEmpty(element)) {
3277
3304
  _context11.next = 9;
@@ -3350,6 +3377,25 @@ var Utiller = /*#__PURE__*/function () {
3350
3377
  return Array.from(new Set(array));
3351
3378
  }
3352
3379
  }
3380
+
3381
+ /**
3382
+ * Extract unique values of a specific key from an array of objects.
3383
+ * array = [ { valueOfType: 1 }, { valueOfType: 7, valueOfSubType: 6 }, { valueOfType: 1 } ];
3384
+ console.log(getUniqueValuesBy(array, 'valueOfType')); //[1, 7]
3385
+ *
3386
+ * @param {Array<Object>} array - The array of objects to process.
3387
+ * @param {string} key - The key to extract values from. Default is 'valueOfType'.
3388
+ * @returns {Array<any>} A deduplicated array of the extracted values.
3389
+ */
3390
+ }, {
3391
+ key: "getUniqueValuesBy",
3392
+ value: function getUniqueValuesBy(array) {
3393
+ var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "valueOfType";
3394
+ return _lodash["default"].uniq(array.map(function (item) {
3395
+ return item[key];
3396
+ }));
3397
+ }
3398
+ /* 測試資料 */
3353
3399
  }]);
3354
3400
  }();
3355
3401
  var _default = exports["default"] = Utiller;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utiller",
3
- "version": "1.0.295",
3
+ "version": "1.0.297",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,7 +11,7 @@
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
13
  "configerer": "^1.0.11",
14
- "utiller": "^1.0.294",
14
+ "utiller": "^1.0.296",
15
15
  "linepayer": "^1.0.4",
16
16
  "databazer": "^1.0.12",
17
17
  "lodash": "^4.17.20",