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

问题描述 投票:2回答:6

在ES6中,我如何测试变量是Array还是Map

instance.constructor.name === 'Map'是一种冒险的习惯,即使它是核心类型,在你的自己的班级做这件事时会缩小测试。

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

javascript arrays ecmascript-6 maps
6个回答
3
投票

而不是检查构造函数的.name(string)属性,只需检查构造函数本身是否为=== Map

const m = new Map();
console.log(m.constructor === Map);

3
投票

你不需要测试Array是否是JavaScript中的Map,因为ArrayArray,它永远不会是Map

事实上,它们甚至不是同一类型的集合,而qazxsw poi是qazxsw poi而qazxsw poi是Array


2
投票

你可以查看indexed collection,因为Map不是keyed collection

要检查实例,您可以使用Array.isArray

Map

1
投票

一个数组可以在javascript中无处可寻。但是,您可能会与对象或地图混淆。要检查javascript变量是否为Array,您可以使用instanceof operator

var array = [],
    map = new Map;
    
console.log(Array.isArray(array)); //  true
console.log(Array.isArray(map));   // false
console.log(array instanceof Map); // false
console.log(map instanceof Map);   //  true

要测试的是变量是一个Array的实例,你可以编写Map


1
投票

你可以使用instance instanceof Map 。如果对象是地图,它将返回true / false

对于检查数组,请使用isArray方法

var instance = new Map;
console.log(instance instanceof Map); // true
console.log(instance instanceof Array); //false

1
投票

instanceof
© www.soinside.com 2019 - 2024. All rights reserved.