@appolo/utils
Advanced tools
Comparing version 8.0.19 to 8.0.20
@@ -186,4 +186,29 @@ "use strict"; | ||
} | ||
static difference(arr, arr2) { | ||
return Arrays.differenceBy(arr, arr2, item => item); | ||
} | ||
static differenceBy(arr, arr2, criteria) { | ||
let out = []; | ||
if (!arr || !arr.length) { | ||
return []; | ||
} | ||
if (!arr2 || !arr2.length) { | ||
return arr; | ||
} | ||
for (let i = 0; i < arr.length; i++) { | ||
let item1 = arr[i], key1 = criteria(item1, i), found = false; | ||
for (let j = 0; j < arr2.length; j++) { | ||
let item2 = arr2[j], key2 = criteria(item2, j); | ||
if (key1 === key2) { | ||
found = true; | ||
} | ||
} | ||
if (!found) { | ||
out.push(item1); | ||
} | ||
} | ||
return out; | ||
} | ||
} | ||
exports.Arrays = Arrays; | ||
//# sourceMappingURL=arrays.js.map |
@@ -123,3 +123,3 @@ import {Classes} from "./classes"; | ||
public static keyByMap<T extends any, K extends any = string>(arr: T[], key?: string | ((item: T, index: number) => string)): Map<K,T> { | ||
public static keyByMap<T extends any, K extends any = string>(arr: T[], key?: string | ((item: T, index: number) => string)): Map<K, T> { | ||
@@ -130,3 +130,3 @@ if (!key) { | ||
let output: Map<K,T> = new Map<K, T>(), isFn = Classes.isFunction(key); | ||
let output: Map<K, T> = new Map<K, T>(), isFn = Classes.isFunction(key); | ||
@@ -139,3 +139,3 @@ for (let i = 0, len = (arr || []).length; i < len; i++) { | ||
output.set(outputKey,item); | ||
output.set(outputKey, item); | ||
} | ||
@@ -260,2 +260,34 @@ | ||
} | ||
public static difference<T>(arr: T[], arr2: T[]): T[] { | ||
return Arrays.differenceBy(arr, arr2, item => item); | ||
} | ||
public static differenceBy<T>(arr: T[], arr2: T[], criteria: (value: T, i?: number) => any): T[] { | ||
let out = []; | ||
if (!arr || !arr.length) { | ||
return [] | ||
} | ||
if (!arr2 || !arr2.length) { | ||
return arr | ||
} | ||
for (let i = 0; i < arr.length; i++) { | ||
let item1 = arr[i], key1 = criteria(item1, i), | ||
found = false; | ||
for (let j = 0; j < arr2.length; j++) { | ||
let item2 = arr2[j], key2 = criteria(item2, j); | ||
if (key1 === key2) { | ||
found = true; | ||
} | ||
} | ||
if (!found) { | ||
out.push(item1); | ||
} | ||
} | ||
return out; | ||
} | ||
} |
@@ -20,3 +20,3 @@ { | ||
"main": "./index.js", | ||
"version": "8.0.19", | ||
"version": "8.0.20", | ||
"license": "MIT", | ||
@@ -23,0 +23,0 @@ "repository": { |
Sorry, the diff of this file is not supported yet
190663
3409