检测对象是数组还是类型化数组

Ger*_*ard 3 javascript typed-arrays

我需要确定给定的对象是否是Array, 或类型化数组,例如Float32Array.

目前我正在检查该.length属性是否已定义,但这并不总是表示数组。或其他方法的存在性检查也会出现类似的问题.forEach()

几次instanceof检查就足够了,就像这里所做的那样- 但我想知道是否有一个简单的内置功能,例如,一个通用Array.isArray()函数可以满足我的需要。

小智 7

function isArrayOrTypedArray(x) {
    return Boolean(x && (typeof x === 'object') && (Array.isArray(x) || (ArrayBuffer.isView(x) && !(x instanceof DataView)));
}
Run Code Online (Sandbox Code Playgroud)