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

时间:2019-02-23 11:31:35

标签: javascript arrays ecmascript-6 maps

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

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

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

6 个答案:

答案 0 :(得分:3)

代替检查构造函数的.name(字符串)属性,只需检查构造函数本身是否为=== Map

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

答案 1 :(得分:3)

您无需测试JavaScript中的Array是否为Map,因为from selenium import webdriver from selenium.webdriver.common.by import By the_url = 'https://www.hvw-online.org/spielbetrieb/ergebnissetabellen/#/league?ogId=3&lId=37133&allGames=1' driver = webdriver.Chrome() driver.get(the_url) elem_high = driver.find_elements(By.CLASS_NAME, 'container') for e in elem_high: print(e) # what class or element to search for second table elem_deep = driver.find_elements(By.CLASS_NAME, 'row.game') driver.close() Array,所以它永远不会是{{1 }}。

实际上,它们甚至不是同一类集合,Arrayindexed collection,而Mapkeyed collection

答案 2 :(得分:2)

您可以使用Array.isArray进行检查,因为Map不是Array

要检查实例,可以使用instanceof operator

cmake -G 'NMake Makefiles'

答案 3 :(得分:1)

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

var a = new Map;
console.log(a instanceof Map);

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

var a= new Array;
console.log(Array.isArray(a))

答案 4 :(得分:1)

在javascript中,数组也可以是Map。但是,您可能对Object或map感到困惑。要检查javascript变量是否为Map,可以使用instanceof

instance instanceof Map

要测试变量是否为数组的实例,可以编写Array.isArray(instance)

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

答案 5 :(得分:1)

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