UNPKG

@extra-array/is-value

Version:
53 lines (47 loc) 1.02 kB
'use strict'; /** * Gives same value. * @param v a value * @returns v */ function id(v) { return v; } /** * Compares two values. * @param a a value * @param b another value * @returns a<b: -1, a=b: 0, a>b: 1 */ function cmp(a, b) { return a < b ? -1 : (a > b ? 1 : 0); } /** * Finds first index of a value. * @param x an array * @param v search value * @param fc compare function (a, b) * @param fm map function (v, i, x) * @returns index of value, -1 if not found */ function searchValue(x, v, fc = null, fm = null) { var fc = fc || cmp, fm = fm || id; var v1 = fm(v, 0, null), i = -1; for (var u of x) { var u1 = fm(u, ++i, x); if (fc(u1, v1) === 0) return i; } return -1; } /** * Checks if array has a value. * @param x an array * @param v value? * @param fc compare function (a, b) * @param fm map function (v, i, x) */ function isValue(x, v, fc = null, fm = null) { return searchValue(x, v, fc, fm) >= 0; } module.exports = isValue;