js中判断是数组的方式

文章类型:Javascript

发布者:admin

发布时间:2023-05-17

在实际开发中,经常会遇到需要判断数组情况,今天,整理一下判断数组的常用方式

一:Array.isArray() 方法:来判断一个变量是否为数组。它返回一个布尔值,如果变量是数组,则返回 true,否则返回 false

const arr = [1, 2, 3];
const isArr = Array.isArray(arr);
console.log(isArr); // true

二:instanceof 操作符:检查一个对象是否属于特定类的实例。对于数组,可以使用 instanceof Array 来判断

const arr = [1, 2, 3];
const isArr = arr instanceof Array;
console.log(isArr); // true

三:Array.prototype.isPrototypeOf() 方法:来检查数组的原型是否存在于对象的原型链上

const arr = [1, 2, 3];
const isArr = Array.prototype.isPrototypeOf(arr);
console.log(isArr); // true

四:Object.prototype.toString.call() 方法:获取一个对象的内部属性 [[Class]] 的值,从而判断对象的类型

const arr = [1, 2, 3];
const type = Object.prototype.toString.call(arr);
const isArr = type === '[object Array]';
console.log(isArr); // true

五:Array.prototype.constructor 属性:组对象的 constructor 属性指向 Array 构造函数。可以通过比较变量的构造函数是否为 Array 来判断

const arr = [1, 2, 3];
const isArr = arr.constructor === Array;
console.log(isArr); // true

六:Array.from() 方法:将一个类似数组或可迭代对象转换为真正的数组

const arr = [1, 2, 3];
const isArr = Array.from(arr) instanceof Array;
console.log(isArr); // true

七:Array.prototype.slice() 方法:尝试对变量执行切片操作。如果变量是一个数组,切片操作会成功并返回一个新的数组。否则,切片操作会抛出错误或返回一个非数组的结果

const arr = [1, 2, 3];
const isArr = Array.prototype.slice.call(arr) instanceof Array;
console.log(isArr); // true

八:迭代器接口(Iterator Interface):来判断一个变量是否可迭代,从而间接判断其是否为数组

const arr = [1, 2, 3];
const isArr = typeof arr[Symbol.iterator] === 'function';
console.log(isArr); // true

九:Symbol.hasInstance 方法:来判断一个对象是否为数组的实例。

const arr = [1, 2, 3];
const isArr = Array[Symbol.hasInstance](arr);
console.log(isArr); // true