Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何判断是否是数组? #31

Open
artdong opened this issue Aug 22, 2019 · 1 comment
Open

如何判断是否是数组? #31

artdong opened this issue Aug 22, 2019 · 1 comment
Labels
js javascript

Comments

@artdong
Copy link
Collaborator

artdong commented Aug 22, 2019

如何判断是否是数组?

@artdong artdong added the js javascript label Aug 22, 2019
@artdong artdong added this to To do in fe-interview Aug 22, 2019
@artdong
Copy link
Collaborator Author

artdong commented Sep 10, 2019

typeof操作符

js中检测数据类型的一种方式,可轻松检测出常用类型,例如,String,Number,Boolean,Function,Undefind,但在对象和数组之间它分不清除。

let a=[];
let b={};

console.log(typeof(a)); //object
console.log(typeof(b));//object
console.log(typeof(null));//object

instanceof操作符

instanceof操作符用于测试一个对象在其原型链中是否存一个构造函数的prototype属性。

eg. Object instanceof constructor

object:要检测的对象
constructor:某个构造函数

console.log({} instanceof Array); // fasle
console.log([] instanceof Array); // true

console.log({} instanceof Object); // true
console.log([] instanceof Object); // true

Array、Function的原型都是Object

通过constructor来判断

如果是数组,那么arr.constructor === Array(不准确,因为我们可以指定obj.constructor = Array)

let a = 1;
console.log(a.constructor === Array); // false
a.constructor = Array;
console.log(a.constructor === Array); // true

使用Object.prototype.toString.call判断

如果值是[object Array],说明是数组

console.log(Object.prototype.toString.call([]));  // [object Array]
console.log(Object.prototype.toString.call({}));  // [object Object]

Array.prototype.isPrototypeOf

console.log(Array.prototype.isPrototypeOf([]));  // true
console.log(Array.prototype.isPrototypeOf({}));  // false

console.log(Object.prototype.isPrototypeOf([]));  // true
console.log(Object.prototype.isPrototypeOf({}));  // true

Array、Function的原型都是Object

Array.isArray()

let a = [];
Array.isArray(); // true

能判断数组的方法有:Object instanceof constructor,Object.prototype.toString.call, Array.prototype.isPrototypeOf,Array.isArray()

能区分数组和对象的方法 Object.prototype.toString.call,Array.isArray()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
js javascript
Projects
Development

No branches or pull requests

1 participant