@locustjs/extensions-array
Advanced tools
| import { throwIfNotArray } from "@locustjs/exception"; | ||
| import { isEqualityComparer, DefaultEqualityComparer } from "@locustjs/base"; | ||
| const containsAny = function (arr, ...values) { | ||
| throwIfNotArray(arr, "arr"); | ||
| const lastValue = values.length ? values[values.length - 1] : null; | ||
| let equalityComparer = isEqualityComparer(lastValue) | ||
| ? lastValue | ||
| : DefaultEqualityComparer; | ||
| let result = false; | ||
| for (let i = 0; i < values.length; i++) { | ||
| if (arr.findIndex((x) => equalityComparer.equals(x, values[i])) >= 0) { | ||
| result = true; | ||
| break; | ||
| } | ||
| } | ||
| return result; | ||
| }; | ||
| export default containsAny; |
| import { configureArrayExtensions } from "../src"; | ||
| configureArrayExtensions("containsAny"); | ||
| const tests = [ | ||
| [ | ||
| "Array.containsAny: 1", | ||
| function (expect) { | ||
| const arr = ["Ali", "Reza", "Saeed"]; | ||
| expect(arr.containsAny("ali")).toBeTrue(); | ||
| expect(arr.containsAny("reza", "ali")).toBeTrue(); | ||
| expect(arr.containsAny("hamid", "ali", "leila")).toBeTrue(); | ||
| expect(arr.containsAny("hamid", "ramin", "leila")).toBeFalse(); | ||
| }, | ||
| ], | ||
| [ | ||
| "Array.containsAny: 2", | ||
| function (expect) { | ||
| const arr = ["Ali", "Reza", "Saeed", "123", 456]; | ||
| expect(arr.containsAny("ali")).toBeTrue(); | ||
| expect(arr.containsAny("reza", "ali")).toBeTrue(); | ||
| expect(arr.containsAny("456", 123)).toBeTrue(); | ||
| expect(arr.containsAny(12, 20, "36")).toBeFalse(); | ||
| }, | ||
| ], | ||
| ]; | ||
| export default tests; |
| import { containsAny } from "../src"; | ||
| const tests = [ | ||
| [ | ||
| "containsAny: 1", | ||
| function (expect) { | ||
| const arr = ["Ali", "Reza", "Saeed"]; | ||
| expect(containsAny(arr, "ali")).toBeTrue(); | ||
| expect(containsAny(arr, "reza", "ali")).toBeTrue(); | ||
| expect(containsAny(arr, "hamid", "ali", "leila")).toBeTrue(); | ||
| expect(containsAny(arr, "hamid", "ramin", "leila")).toBeFalse(); | ||
| }, | ||
| ], | ||
| [ | ||
| "containsAny: 2", | ||
| function (expect) { | ||
| const arr = ["Ali", "Reza", "Saeed", "123", 456]; | ||
| expect(containsAny(arr, "ali")).toBeTrue(); | ||
| expect(containsAny(arr, "reza", "ali")).toBeTrue(); | ||
| expect(containsAny(arr, "456", 123)).toBeTrue(); | ||
| expect(containsAny(arr, 12, 20, "36")).toBeFalse(); | ||
| }, | ||
| ], | ||
| ]; | ||
| export default tests; |
+55
-28
@@ -38,28 +38,43 @@ 'use strict'; | ||
| var contains = function contains(arr) { | ||
| exception.throwIfNotArray(arr, "arr"); | ||
| var result = []; | ||
| for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| values[_key - 1] = arguments[_key]; | ||
| } | ||
| exception.throwIfNotArray(arr, "arr"); | ||
| var lastValue = values.length ? values[values.length - 1] : null; | ||
| var equalityComparer = base.isEqualityComparer(lastValue) ? lastValue : base.DefaultEqualityComparer; | ||
| var result = true; | ||
| var _loop = function _loop(i) { | ||
| if (arr.findIndex(function (x) { | ||
| return equalityComparer.equals(x, values[i]); | ||
| }) < 0) { | ||
| result = false; | ||
| return 1; // break | ||
| } | ||
| }; | ||
| for (var i = 0; i < values.length; i++) { | ||
| if (base.isPrimitive(values[i])) { | ||
| values[i] = values[i].toString().toLowerCase(); | ||
| } | ||
| if (_loop(i)) break; | ||
| } | ||
| for (var _i = 0; _i < arr.length; _i++) { | ||
| if (base.isPrimitive(arr[_i])) { | ||
| for (var j = 0; j < values.length; j++) { | ||
| if (arr[_i].toString().toLowerCase() == values[j]) { | ||
| result.push(true); | ||
| } | ||
| } | ||
| } else { | ||
| for (var _j = 0; _j < values.length; _j++) { | ||
| if (base.equals(arr[_i], values[_j])) { | ||
| result.push(true); | ||
| } | ||
| } | ||
| return result; | ||
| }; | ||
| var containsAny = function containsAny(arr) { | ||
| for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| values[_key - 1] = arguments[_key]; | ||
| } | ||
| exception.throwIfNotArray(arr, "arr"); | ||
| var lastValue = values.length ? values[values.length - 1] : null; | ||
| var equalityComparer = base.isEqualityComparer(lastValue) ? lastValue : base.DefaultEqualityComparer; | ||
| var result = false; | ||
| var _loop = function _loop(i) { | ||
| if (arr.findIndex(function (x) { | ||
| return equalityComparer.equals(x, values[i]); | ||
| }) >= 0) { | ||
| result = true; | ||
| return 1; // break | ||
| } | ||
| }; | ||
| for (var i = 0; i < values.length; i++) { | ||
| if (_loop(i)) break; | ||
| } | ||
| return result.length == values.length; | ||
| return result; | ||
| }; | ||
@@ -350,8 +365,6 @@ | ||
| var isEqualityComparer = function isEqualityComparer(x) { | ||
| return isObject(x) && isFunction(x.equals); | ||
| }; | ||
| var objectify = function objectify(arr) { | ||
| return toObject(arr, "key-value"); | ||
| }; | ||
| var containsAll = contains; | ||
| function configureArrayExtensions(options, logger) { | ||
@@ -386,2 +399,14 @@ var eh = new ExtensionHelper(options, logger); | ||
| }); | ||
| eh.extend(Array, "containsAll", function () { | ||
| for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
| args[_key2] = arguments[_key2]; | ||
| } | ||
| return containsAll.apply(void 0, [this].concat(args)); | ||
| }); | ||
| eh.extend(Array, "containsAny", function () { | ||
| for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { | ||
| args[_key3] = arguments[_key3]; | ||
| } | ||
| return containsAny.apply(void 0, [this].concat(args)); | ||
| }); | ||
| eh.extend(Array, "objectify", function () { | ||
@@ -411,4 +436,4 @@ return objectify(this); | ||
| eh.extend(Array, "joins", function () { | ||
| for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
| args[_key2] = arguments[_key2]; | ||
| for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { | ||
| args[_key4] = arguments[_key4]; | ||
| } | ||
@@ -418,4 +443,4 @@ return joins.apply(void 0, [this].concat(args)); | ||
| eh.extend(Array, "sortBy", function () { | ||
| for (var _len3 = arguments.length, fns = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { | ||
| fns[_key3] = arguments[_key3]; | ||
| for (var _len5 = arguments.length, fns = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { | ||
| fns[_key5] = arguments[_key5]; | ||
| } | ||
@@ -449,3 +474,3 @@ return sortBy.apply(void 0, [this].concat(fns)); | ||
| return _array_find(function (x) { | ||
| return isEqualityComparer(thisArg) ? thisArg.equals(x, arg) : x == arg; | ||
| return base.isEqualityComparer(thisArg) ? thisArg.equals(x, arg) : x == arg; | ||
| }, thisArg); | ||
@@ -459,3 +484,3 @@ }); | ||
| return _array_findIndex(function (x) { | ||
| return isEqualityComparer(thisArg) ? thisArg.equals(x, arg) : x == arg; | ||
| return base.isEqualityComparer(thisArg) ? thisArg.equals(x, arg) : x == arg; | ||
| }, thisArg); | ||
@@ -469,2 +494,4 @@ }); | ||
| exports.contains = contains; | ||
| exports.containsAll = containsAll; | ||
| exports.containsAny = containsAny; | ||
| exports.insertAt = insertAt; | ||
@@ -471,0 +498,0 @@ exports.joins = joins; |
+2
-2
| { | ||
| "name": "@locustjs/extensions-array", | ||
| "version": "2.2.0", | ||
| "version": "2.4.0", | ||
| "description": "This library contains extensions for Array", | ||
@@ -34,3 +34,3 @@ "main": "dist/index.js", | ||
| "dependencies": { | ||
| "@locustjs/base": "^4.4.1", | ||
| "@locustjs/base": "^4.5.1", | ||
| "@locustjs/exception": "^2.2.0", | ||
@@ -37,0 +37,0 @@ "@locustjs/extensions-options": "^2.2.2" |
+11
-21
@@ -1,3 +0,3 @@ | ||
| import { isPrimitive, equals } from "@locustjs/base"; | ||
| import { throwIfNotArray } from "@locustjs/exception"; | ||
| import { isEqualityComparer, DefaultEqualityComparer } from "@locustjs/base"; | ||
@@ -7,29 +7,19 @@ const contains = function (arr, ...values) { | ||
| let result = []; | ||
| const lastValue = values.length ? values[values.length - 1] : null; | ||
| let equalityComparer = isEqualityComparer(lastValue) | ||
| ? lastValue | ||
| : DefaultEqualityComparer; | ||
| let result = true; | ||
| for (let i = 0; i < values.length; i++) { | ||
| if (isPrimitive(values[i])) { | ||
| values[i] = values[i].toString().toLowerCase(); | ||
| if (arr.findIndex((x) => equalityComparer.equals(x, values[i])) < 0) { | ||
| result = false; | ||
| break; | ||
| } | ||
| } | ||
| for (let i = 0; i < arr.length; i++) { | ||
| if (isPrimitive(arr[i])) { | ||
| for (let j = 0; j < values.length; j++) { | ||
| if (arr[i].toString().toLowerCase() == values[j]) { | ||
| result.push(true); | ||
| } | ||
| } | ||
| } else { | ||
| for (let j = 0; j < values.length; j++) { | ||
| if (equals(arr[i], values[j])) { | ||
| result.push(true); | ||
| } | ||
| } | ||
| } | ||
| } | ||
| return result.length == values.length; | ||
| return result; | ||
| }; | ||
| export default contains; |
+14
-2
@@ -5,2 +5,3 @@ import ExtensionHelper from "@locustjs/extensions-options"; | ||
| import contains from "./contains"; | ||
| import containsAny from "./containsAny"; | ||
| import insertAt from "./insertAt"; | ||
@@ -15,5 +16,6 @@ import joins from "./joins"; | ||
| import toObject from "./toObject"; | ||
| import { isEqualityComparer } from "@locustjs/base"; | ||
| const isEqualityComparer = (x) => isObject(x) && isFunction(x.equals); | ||
| const objectify = (arr) => toObject(arr, "key-value"); | ||
| const containsAll = contains; | ||
@@ -54,2 +56,10 @@ function configureArrayExtensions(options, logger) { | ||
| eh.extend(Array, "containsAll", function (...args) { | ||
| return containsAll(this, ...args); | ||
| }); | ||
| eh.extend(Array, "containsAny", function (...args) { | ||
| return containsAny(this, ...args); | ||
| }); | ||
| eh.extend(Array, "objectify", function () { | ||
@@ -119,3 +129,3 @@ return objectify(this); | ||
| }); | ||
| const _array_findIndex = Array.prototype.findIndex; | ||
@@ -147,2 +157,4 @@ | ||
| contains, | ||
| containsAll, | ||
| containsAny, | ||
| min, | ||
@@ -149,0 +161,0 @@ max, |
+13
-0
@@ -14,4 +14,17 @@ import { contains } from "../src"; | ||
| ], | ||
| [ | ||
| "contains: 2", | ||
| function (expect) { | ||
| const arr = ["Ali", "Reza", "Saeed", "123", 456]; | ||
| expect(contains(arr, "ali")).toBeTrue(); | ||
| expect(contains(arr, "Reza", "ali")).toBeTrue(); | ||
| expect(contains(arr, "reza", "ali", 123)).toBeTrue(); | ||
| expect(contains(arr, "456", 123)).toBeTrue(); | ||
| expect(contains(arr, "456", 123, "jake")).toBeFalse(); | ||
| expect(contains(arr, 4567)).toBeFalse(); | ||
| }, | ||
| ], | ||
| ]; | ||
| export default tests; |
+4
-0
@@ -19,2 +19,4 @@ import test11 from "./all"; | ||
| import test92 from "./Array.toObject"; | ||
| import test101 from "./containsAny"; | ||
| import test102 from "./Array.containsAny"; | ||
| import { TestRunner } from "@locustjs/test"; | ||
@@ -41,4 +43,6 @@ | ||
| ...test92, | ||
| ...test101, | ||
| ...test102, | ||
| ]; | ||
| TestRunner.start(tests, true); |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
58853
7.45%40
8.11%1750
6.64%0
-100%Updated