PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/@bitgo-forks/avalanchejs/src/utils
Просмотр файла: consolidate.ts
/**
* This implementation of `consolidate` `combine`s all elements of `arr`
* for which `canCombine` returns `true`. It is assumed that all combinations
* can be determined with an initial scan of `arr`, and that `canCombine` is transitive,
* meaning if `canCombine(A, B)` and `canCombine(B, C)` then `canCombine(combine(A, B), C)`
* @param arr - an array of elements
* @param canCombine - a function which determines if 2 elements can combine
* @param combine - a function which combines 2 elements
* @returns an array combined elements
*/
export const consolidate = <T>(
arr: T[],
canCombine: (a: T, b: T) => boolean,
combine: (a: T, b: T) => T,
): T[] => {
const consolidated: T[] = [];
for (const el of arr) {
let combined = false;
for (let i = 0; i < consolidated.length; i++) {
const existing = consolidated[i];
if (canCombine(existing, el)) {
consolidated[i] = combine(existing, el);
combined = true;
break;
}
}
if (!combined) {
consolidated.push(el);
}
}
return consolidated;
};
Выполнить команду
Для локальной разработки. Не используйте в интернете!