@extra-array/is-value
Version:
Checks if array has a value.
53 lines (47 loc) • 1.02 kB
JavaScript
;
/**
* 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;