如何测试变量是 Map 还是 Array 类型?

Dim*_*iwa 4 javascript arrays maps ecmascript-6

在 ES6 中,如何测试变量是 anArray还是 a Map

instance.constructor.name === 'Map' 是一个危险的习惯,即使它是核心类型,在缩小时用你自己的类这样做会破坏测试。

验证变量是一个实例的最可靠方法是什么? Map

Far*_*sir 6

const getType = obj => Object.prototype.toString.call(obj).slice(8, -1);

const isArray = obj => getType(obj) === 'Array';

const isMap = obj => getType(obj) === 'Map';


const arr = [];

console.log(isArray(arr)); // true


const map = new Map();

console.log(isMap(map)); // true
Run Code Online (Sandbox Code Playgroud)


ell*_*sis 5

您可以使用instanceof。如果对象是地图或不是地图,它将返回 true/false

var a = new Map;
console.log(a instanceof Map);
Run Code Online (Sandbox Code Playgroud)

要检查数组,请使用 isArray 方法

var a= new Array;
console.log(Array.isArray(a))
Run Code Online (Sandbox Code Playgroud)