isArray等效于新Map()?

时间:2016-10-20 07:24:26

标签: javascript ecmascript-6

如何确定我的数据结构是Map()类型?

我到处寻找,找不到任何方法

我真的想开始使用它们因为我可以使用对象作为键!

3 个答案:

答案 0 :(得分:4)

您可以使用 instanceof opeartor



var map = new Map();
var arr = [];

console.log(map instanceof Map);
console.log(map instanceof Array);
console.log(arr instanceof Map);
console.log(arr instanceof Array);




来自Documentation

  

instanceof运算符测试对象是否在其原型中   链接构造函数的prototype属性。

答案 1 :(得分:3)

您可以使用instanceof运算符或constructor属性并检查对象。

欲了解更多信息,请阅读:What's the difference between using instanceof and checking the constructor?

var map = new Map();
var arr = [];

console.log(map instanceof Map);         // true
console.log(map instanceof Array);       // false
console.log(map.constructor === Map);    // true
console.log(map.constructor === Array);  // false

console.log(arr instanceof Map);         // false
console.log(arr instanceof Array);       // true
console.log(arr.constructor === Map);    // false
console.log(arr.constructor === Array);  // true

// caveat!
console.log(arr.constructor === Object); // false
console.log(map.constructor === Object); // false
console.log(arr instanceof Object);      // true
console.log(map instanceof Object);      // true

答案 2 :(得分:0)

您甚至可以使用Object.prototype.toString.call,但instanceof(@ suren srapyan的答案)更受欢迎



var a = [1,2,3];
var m = new Map()
a.forEach((x,i)=>m.set(i+1, x));

console.log(Object.prototype.toString.call(m))