UNPKG

@extra-array/is-prefix

Version:

Checks if array starts with a prefix.

25 lines (23 loc) 660 B
import id from './_id'; import cmp from './_cmp'; import type {compareFn, mapFn} from './_types'; /** * Compares two arrays. * @param x an array * @param y another array * @param fc compare function (a, b) * @param fm map function (v, i, x) * @returns x<y: -1, x=y: 0, x>y: 1 */ function compare<T, U=T>(x: T[], y: T[], fc: compareFn<T|U>=null, fm: mapFn<T, T|U>=null): number { var fc = fc||cmp, fm = fm||id; var X = x.length, Y = y.length; for(var i=0, I=Math.min(X, Y); i<I; i++) { var u1 = fm(x[i], i, x); var v1 = fm(y[i], i, y); var c = fc(u1, v1); if(c!==0) return c; } return Math.sign(X-Y); } export default compare;