every.js

import forEach from './forEach';
import identity from './identity';
/**
 * 迭代集合中的元素执行 `predicate` 函数,如果全部元素都通过 `predicate` 返回真值,则返回 `true`,否则停止迭代并返回 `false`。
 *
 * `predicate` 调用时会传入三个参数 `value` `index|key` `collection`。
 *
 * @function
 * @alias module:Collection.every
 * @since 1.7.0
 * @param {ArrayLike<any> | Object} collection 要迭代的集合。
 * @param {function} [predicate=identity] 每次迭代调用的函数。默认 `identity`。
 * @returns {boolean} 如果全部元素都通过 `predicate` 测试,则返回 `true`,否则返回 `false`。
 * @example
 *
 * const arr = [1, 2, 3, 4, 5, 6];
 * every(arr, item => item % 2 === 0); // false
 * every(arr); // true
 *
 * const obj = { one: 1, two: 2, three: 3 };
 * every(obj, item => item > 1); // false
 * every(obj, item => item > 0); // true
 */
const every = function (collection, predicate = identity) {
    let result = true;
    forEach(collection, (item, index, arr) => {
        if (!predicate(item, index, arr)) {
            result = false;
            return false;
        }
    });
    return result;
};
export default every;