non_std 0.1.4

Collection of general purpose tools for solving problems. Fundamentally extend the language without spoiling, so may be used solely or in conjunction with another module of such kind.
Documentation
require( 'wTools' );

// without equalizer or evalutor

let arr1 = [ 1, 2, 'a', 'b', true, 6, [ 1 ] ];
let elem1_1 = 1;
let elem1_2 = [ 1 ];

console.log( 'The number of element 1 in the array arr1:' );
console.log( wTools.longCountElement( arr1, elem1_1 ) );
// returns 1
console.log( 'The number of element [ 1 ] in the array arr1:' );
console.log( wTools.longCountElement( arr1, elem1_2 ) );
// returns 0

// with equilizer

let arr2 = [ 'a', 4, 6, 1, 3, true, 'd', [ 'str' ] ];
let elem2_1 = 'str';
let elem2_2 = [ 'str' ];
let equalizer = ( elem, arrEl ) => typeof elem !== typeof arrEl;

console.log( 'The number of element \'str\' in the array arr2:' );
console.log( wTools.longCountElement( arr2, elem2_1, equalizer ) );
// returns 6
console.log( 'The number of element [ \'str\' ] in the array arr2:' );
console.log( wTools.longCountElement( arr2, elem2_2, equalizer ) );
// returns 7

// with evalutor, one function

let arr3 = [ { v : 1 }, { v : 2 }, { v : 'str' }, { v : 2, e : 'str' } ];
let elem3 =  { v : 2 };
let evalutor = ( elem ) => elem.v;

console.log( 'The number of elements with pair \'v : 2\' in the array arr3:' );
console.log( wTools.longCountElement( arr3, elem3, evalutor ) );

// with evalutor, one function

let arr4 = [ { v : 1 }, { v : 2 }, { v : 'str' }, { v : 2, e : 'str' } ];
let elem4 =  'str';
let evalutor1 = ( arrEl ) => arrEl.v;
let evalutor2 = ( elem ) => elem;

console.log( 'The number of elements, which has value \'str\' in the array arr4:' );
console.log( wTools.longCountElement( arr3, elem4, evalutor1, evalutor2 ) );
// returns 1