UNPKG

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
/** * 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;