import curry2 from "../function/curry2"; import objectWhile from "../internals/_objectWhile"; import isNil from "../logic/isNil"; /** * Returns the first element of a list that passes the condition function. * * @param {function} condFn * @param {any[]|object} list * @returns {any} */ const find = (condFn, list) => { if (Array.isArray(list)) { return list.find(condFn); } let foundKey; objectWhile( () => isNil(foundKey), (value, key, obj) => { if (condFn(value, key, obj)) { foundKey = key; } }, list ); return isNil(foundKey) ? null : list[foundKey]; }; export default curry2(find);