3 Ways to Detect an Array in JavaScript

栏目: IT技术 · 发布时间: 5年前

内容简介:Checking whether a value is an array in JavaScript is necessary when a variable is expected to be an array, but it could be a plain object or even a primitive.In this post, you’ll find 3 good ways to detect an array instance in JavaScript.If you don’t have

Checking whether a value is an array in JavaScript is necessary when a variable is expected to be an array, but it could be a plain object or even a primitive.

In this post, you’ll find 3 good ways to detect an array instance in JavaScript.

1. Array.isArray(value)

If you don’t have time to read the entire post, here’s a good way to detect an array in JavaScript: just use Array.isArray(value) utility function.

But if you want to know more, let’s continue.

Here are a few examples of using Array.isArray() :

const array = [1, 2, 3];
const object = { message: 'Hello!' };
const string = 'Hello!';
const empty = null;

Array.isArray(array);  // => trueArray.isArray(object); // => false
Array.isArray(string); // => false
Array.isArray(empty);  // => false

Array.isArray() has a good browser support . It’s the recommended way to check for an array in JavaScript.

Array.isArray(value) utility function returns true if value is an array.

2. value instanceof Array

An array is an object. And like any object in JavaScript, the array instance has a constructor function — Array .

Array invoked as a constructor (prefixed with new keyword) creates array instances:

const array = new Array(1, 2, 3);

array; // => [1, 2, 3]

Moreover, the array instance exposes its constructor using a property .constructor :

const array = [1, 2, 3];

array.constructor === Array; // => true

What is the operator that verifies whether a function is the constructor of an instance? instanceof !

Now emerges the next way to detect an array: value instance Array evaluates to true if value is an array.

Let’s see a few examples:

const array = [1, 2, 3];
const object = { message: 'Hello!' };
const string = 'Hello!';
const empty = null;

array  instanceof Array; // => trueobject instanceof Array; // => false
string instanceof Array; // => false
empty  instanceof Array; // => false

Resuming:

value instanceof Array expressions evaluates to true if value is an array.

Note: value instanceof Array evaluates to false when value is an array created in a different iframe than the Array constructor function. If you’re not writing cross-frames JavaScript, use this approach without worries.

3. ({}).toString.call(value)

toString() method of a plain JavaScript object returns '[object <type>]' , where <type> is the object type it was called upon. Take a look at the specification which indicates how exactly Object.prototype.toString() works.

In the simplest case, when toString() method is invoked directly on a plain object, it returns '[object Object]' :

({}).toString(); // => '[object Object]'

However, you can use anindirect call of toString() on different types of values, and the method returns the corresponding string representation of the type:

const array = [1, 2, 3];
const object = { message: 'Hello' };
const string = 'Hello!';
const empty = null;

({}).toString.call(array);   // => '[object Array]'({}).toString.call(object);  // => '[object Object]'
({}).toString.call(string);  // => '[object String]'
({}).toString.call(empty);   // => '[object Null]'

Now you can spot the idea: ({}).toString.call(value) equals to '[object Array]' if value is an array.

const array = [1, 2, 3];

({}).toString.call(array) === '[object Array]'; // => true

In conclusion:

({}).toString.call(value) === '[object Array]' expression evaluates to true if value is an array.

4. Summary

To detect an array my recommendation is to use Array.isArray(value) . The function returns a boolean whether value is an array. Simple as is.

Another approach is value instanceof Array expression that evaluates to true if value is an array. This approach uses the idea that Array function is the constructor of the arrays.

Finally, not the most aesthetic approach is to use the expression ({}).toString.call(value) === '[object Array]' that is true if value is an array.

Object.prototype.toString() returns the type representation of the object it was invoked upon, and the type representation of arrays is '[object Array]' .

What is your favorite way to detect arrays in JavaScript?


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏引擎架构

游戏引擎架构

[美] Jason Gregory (杰森.格雷戈瑞) / 叶劲峰 / 电子工业出版社 / 2014-1 / 128.00元

《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗。虽然书中采用的例子通常依据一些专门的技术,但是讨论范围远超于某个引擎或API。文中的参考及引用也非常有用,可让读者继续深入游戏开发过程的任何特定方向。 《游戏引擎架构》为一个大学程度的游戏编程课程而编写,但也适合软件工程师、业余爱好者、自学游戏程......一起来看看 《游戏引擎架构》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具