在ES6中,如何测试变量是Array
还是Map
?
instance.constructor.name === 'Map'
是一个冒险的习惯,即使它是核心类型,在最小化时使用您自己的类这样做也会破坏测试。
验证变量是否为Map
实例的最可靠方法是什么
答案 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 }}。
实际上,它们甚至不是同一类集合,Array
是indexed collection,而Map
是keyed collection。
答案 2 :(得分:2)
答案 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