Add is.arrayLike() (#26)

This commit is contained in:
Brandon Smith 2017-10-26 09:30:17 -04:00 committed by GitHub
parent 0bafa04e77
commit 83adc096ef
3 changed files with 29 additions and 0 deletions

View file

@ -155,6 +155,9 @@ const typedArrayTypes = new Set([
]);
is.typedArray = x => typedArrayTypes.has(getObjectType(x));
const isValidLength = x => is.safeInteger(x) && x > -1;
is.arrayLike = x => !is.nullOrUndefined(x) && !is.function(x) && isValidLength(x.length);
is.inRange = (x, range) => {
if (is.number(range)) {
return x >= Math.min(0, range) && x <= Math.max(range, 0);

View file

@ -160,6 +160,20 @@ Returns `true` for instances created by a ES2015 class.
##### .typedArray(value)
##### .arrayLike(value)
A `value` is array-like if it is not a function and has a `value.length` that is a safe integer greater than or equal to 0.
```js
is.arrayLike(document.forms);
//=> true
function () {
is.arrayLike(arguments);
//=> true
}
```
##### .inRange(value, range)
Check if `value` (number) is in the given `range`. The range is an array of two values, lower bound and upper bound, in no specific order.

12
test.js
View file

@ -392,6 +392,18 @@ test('is.typedArray', t => {
t.false(m.typedArray({}));
});
test('is.arrayLike', t => {
(() => {
t.true(m.arrayLike(arguments));
})();
t.true(m.arrayLike([]));
t.true(m.arrayLike('unicorn'));
t.false(m.arrayLike({}));
t.false(m.arrayLike(() => {}));
t.false(m.arrayLike(new Map()));
});
test('is.inRange', t => {
const x = 3;