如何检查变量是对象还是数组?

Irv*_*lmi 3 javascript arrays object

我有一个问题,我不知道如何解决它,我测试了一些关于我应该如何比较或检查变量的信息,如果它是一个array或一个object

我试过这个

console.log({} == []); // return false
console.log({1:"haha"} == {}); // return false
console.log(["haha"] == {}); // retun false
Run Code Online (Sandbox Code Playgroud)

问题是,我想知道变量是否实际上是两者的object原因或return 。typeof[]{}object

console.log(isobject({1:"haha"})) // should return true;
console.log(isobject(["haha"])); // should return false;
Run Code Online (Sandbox Code Playgroud)

或者

console.log(isobject({})) // should return true;
console.log(isobject([])); // should return false;
Run Code Online (Sandbox Code Playgroud)

有没有像上面一样function检查variable?感谢您的任何更正。

Vig*_*aja 6

这会有所帮助。

var a = [], b = {};

console.log(Object.prototype.toString.call(a).indexOf("Array")>-1);
console.log(Object.prototype.toString.call(b).indexOf("Object")>-1);

console.log(a.constructor.name == "Array");
console.log(b.constructor.name == "Object");
Run Code Online (Sandbox Code Playgroud)

还有很多其他的方式,但是上面的在所有浏览器中都是向后兼容的。

相关问题必须参考:

检查值是否为数组

检查值是否为对象


jac*_*ank 5

arr = [1,2,3]

Array.isArray(arr)// 应该输出 true

对于我会做的对象 obj = {a:1}

Object.keys(obj).length// 应该输出1

所以你可以做

Object.keys(obj).length >= 0// 如果 obj 是 obj 字面量,则应该为 true。