23 lines
664 B
JavaScript
23 lines
664 B
JavaScript
import { isFunction } from "../../predicate/isFunction.mjs";
|
|
import { iteratee } from "./iteratee.mjs";
|
|
//#region src/compat/util/cond.ts
|
|
function cond(pairs) {
|
|
const length = pairs.length;
|
|
const processedPairs = pairs.map((pair) => {
|
|
const predicate = pair[0];
|
|
const func = pair[1];
|
|
if (!isFunction(func)) throw new TypeError("Expected a function");
|
|
return [iteratee(predicate), func];
|
|
});
|
|
return function(...args) {
|
|
for (let i = 0; i < length; i++) {
|
|
const pair = processedPairs[i];
|
|
const predicate = pair[0];
|
|
const func = pair[1];
|
|
if (predicate.apply(this, args)) return func.apply(this, args);
|
|
}
|
|
};
|
|
}
|
|
//#endregion
|
|
export { cond };
|