asserts/arrays.js

/**
 * @fileOverview Arrays asserts.
 * @module Array
 */

const Types = require('./types');
const Interface = require('../interface');
let Arrays = {};

/**
 * Check if an element is in the array
 *
 * **Interface**: `not`
 *
 * @param value {Mixed} element to search
 * @param array {array} array where search
 * @function
 * @name inArray
 * @return {boolean}
 * @example
 *  be.inArray('hello', ['hello', 'world']) //true
 *  be.inArray('ciao', ['hello', 'world']) //false
 *  be.inArray(1, true) //false
 *  be.not.inArray(1, true) //true
 *  be.Arrays.inArray(1, [1, 2, 3]) //true
 */
Arrays.inArray = (value, array) => {
    if(!Types.array(array)) return false;
    for(let i in array){
        if(array.hasOwnProperty(i) && array[i] === value)
            return true;
    }
    return false;
};

Arrays.inArray.multiple = false;

/**
 * Check if is an array of strings
 *
 * **Interfaces**: `all`, `any`, `not`
 *
 * @param value {array} array
 * @function
 * @name arrayOfStrings
 * @returns {*|boolean}
 * @example
 * be.arrayOfStrings(['hello', 'world']) // true
 * be.all.arrayOfStrings([
 *     ['hello', 'world'],
 *     ['ciao', 'mondo']
 * ]) // true
 */
Arrays.arrayOfStrings = (value) => {
    return Types.all.string(value);
};

/**
 * Check if is an array of objects
 *
 * **Interfaces**: `all`, `any`, `not`
 *
 * @function
 * @name arrayOfObjects
 * @param value {array} array
 * @returns {*|boolean}
 * @example
 * be.arrayOfObjects([{a:1},{b:2}]) // true
 * be.all.arrayOfObjects([
 *      {a: 1},
 *      {b: 2},
 *      [1, 2, 3]
 * ]) // false
 */
Arrays.arrayOfObjects = (value) => {
    return Types.all.object(value);
};

/**
 * Check if is an array of booleans
 *
 * **Interfaces**: `all`, `any`, `not`
 *
 * @function
 * @name arrayOfBooleans
 * @param value {array} array
 * @returns {*|boolean}
 * @example
 * be.arrayOfBooleans([true, false]) // true
 * be.all.arrayOfBooleans([
 *      true,
 *      false,
 *      [1, 2, 3]
 * ]) // false
 */
Arrays.arrayOfBooleans = (value) => {
    return Types.all.boolean(value);
};

Arrays = Interface.create(Arrays);

module.exports = Arrays;