Add _.isTypedArray.

This commit is contained in:
John-David Dalton
2015-01-14 22:22:34 -08:00
committed by jdalton
parent 0bcd12aa4e
commit 28560cb887

View File

@@ -164,22 +164,22 @@
uint16Tag = '[object Uint16Array]', uint16Tag = '[object Uint16Array]',
uint32Tag = '[object Uint32Array]'; uint32Tag = '[object Uint32Array]';
/** Used to identify object classifications that are treated like arrays. */ /** Used to identify `toStringTag` values of typed arrays. */
var arrayLikeTags = {}; var typedArrayTags = {};
arrayLikeTags[argsTag] = typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
arrayLikeTags[arrayTag] = arrayLikeTags[float32Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
arrayLikeTags[float64Tag] = arrayLikeTags[int8Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
arrayLikeTags[int16Tag] = arrayLikeTags[int32Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
arrayLikeTags[uint8Tag] = arrayLikeTags[uint8ClampedTag] = typedArrayTags[uint32Tag] = true;
arrayLikeTags[uint16Tag] = arrayLikeTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
arrayLikeTags[arrayBufferTag] = arrayLikeTags[boolTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
arrayLikeTags[dateTag] = arrayLikeTags[errorTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] =
arrayLikeTags[funcTag] = arrayLikeTags[mapTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] =
arrayLikeTags[numberTag] = arrayLikeTags[objectTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] =
arrayLikeTags[regexpTag] = arrayLikeTags[setTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] =
arrayLikeTags[stringTag] = arrayLikeTags[weakMapTag] = false; typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
/** Used to identify object classifications that `_.clone` supports. */ /** Used to identify `toStringTag` values supported by `_.clone`. */
var cloneableTags = {}; var cloneableTags = {};
cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[argsTag] = cloneableTags[arrayTag] =
cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =
@@ -190,9 +190,9 @@
cloneableTags[regexpTag] = cloneableTags[stringTag] = cloneableTags[regexpTag] = cloneableTags[stringTag] =
cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag] = cloneableTags[errorTag] = cloneableTags[funcTag] =
cloneableTags[funcTag] = cloneableTags[mapTag] = cloneableTags[mapTag] = cloneableTags[setTag] =
cloneableTags[setTag] = cloneableTags[weakMapTag] = false; cloneableTags[weakMapTag] = false;
/** Used as an internal `_.debounce` options object by `_.throttle`. */ /** Used as an internal `_.debounce` options object by `_.throttle`. */
var debounceOptions = { var debounceOptions = {
@@ -800,7 +800,7 @@
/** Used to store function metadata. */ /** Used to store function metadata. */
var metaMap = WeakMap && new WeakMap; var metaMap = WeakMap && new WeakMap;
/** Used to lookup a built-in constructor by `toStringTag`. */ /** Used to lookup a type array constructors by `toStringTag`. */
var ctorByTag = {}; var ctorByTag = {};
ctorByTag[float32Tag] = context.Float32Array; ctorByTag[float32Tag] = context.Float32Array;
ctorByTag[float64Tag] = context.Float64Array; ctorByTag[float64Tag] = context.Float64Array;
@@ -8266,6 +8266,26 @@
return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false; return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false;
} }
/**
* Checks if `value` is classified as typed array.
*
* @static
* @memberOf _
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
* @example
*
* _.isString('abc');
* // => true
*
* _.isString(1);
* // => false
*/
function isTypedArray(value) {
return (isObjectLike(value) && isLength(value.length) && typedArrayTags[objToString.call(value)]) || false;
}
/** /**
* Checks if `value` is `undefined`. * Checks if `value` is `undefined`.
* *
@@ -9065,7 +9085,7 @@
function transform(object, iteratee, accumulator, thisArg) { function transform(object, iteratee, accumulator, thisArg) {
iteratee = getCallback(iteratee, thisArg, 4); iteratee = getCallback(iteratee, thisArg, 4);
var isArr = isArrayLike(object); var isArr = isArray(object) || isTypedArray(object);
if (accumulator == null) { if (accumulator == null) {
if (isArr || isObject(object)) { if (isArr || isObject(object)) {
var Ctor = object.constructor; var Ctor = object.constructor;
@@ -10659,6 +10679,7 @@
lodash.isPlainObject = isPlainObject; lodash.isPlainObject = isPlainObject;
lodash.isRegExp = isRegExp; lodash.isRegExp = isRegExp;
lodash.isString = isString; lodash.isString = isString;
lodash.isTypedArray = isTypedArray;
lodash.isUndefined = isUndefined; lodash.isUndefined = isUndefined;
lodash.kebabCase = kebabCase; lodash.kebabCase = kebabCase;
lodash.last = last; lodash.last = last;