Home Reference Source Test Repository

lib/takeWhile.js

"use strict";

Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.takeWhile = takeWhile;
/**
 * Returns the elements that satisfies the provided predicate function.
 *
 * @since v0.1.0
 * @param {Function} fn - The predicate function
 * @param {Array} list - The list to go through
 * @return {Array}
 * @example
 *   takeWhile(a => a < 3, [1, 2, 3, 4, 1, 2, 3, 4]) // => [1, 2]
 *   takeWhile(a => a < 9, [1, 2, 3]) // => [1, 2, 3]
 *   takeWhile(a => a < 0, [1, 2, 3]) // => []
 *
 */
function takeWhile(fn, list) {
    var results = [];
    list.map(function (element) {
        if (fn(element) && !results.includes(element)) {
            results.push(element);
        }
    });
    return results;
}