similar-object
Version:
A utility to compare objects with numeric fields and get back a score of how close they are.
30 lines (29 loc) • 899 B
TypeScript
/**
* The type of object we want to compare
*/
export declare type SimilarObject = Record<string, any>;
/**
* The configuration object for comparing
*
* @example
* const config = { price: 2, rooms: 3, area: 1 }
*/
export declare type SimilarConfig<T> = {
[K in T as string]: number;
};
/**
*
* @param a current item
* @param b item to compare to
* @param config an object containing all the keys you want to compare and their weights
* @returns a number that is the sum of each comparison
*
* @example
* const unit1: Unit = { price: 1000, rooms: 3, area: 100 };
* const unit2: Unit = { price: 1000, rooms: 5, area: 50 };
* const config: SimilarConfig<Unit> = { price: 1, rooms: 2 };
* const score = similarObject(unit1, unit2, config);
*
*
*/
export declare function similarObject<T extends SimilarObject, C extends SimilarConfig<T>>(a: T, b: T, config: C): number;