0

0

JavaScript判断一个对象是否为数组的几种方法(总结)

青灯夜游

青灯夜游

发布时间:2021-04-02 10:05:32

|

3824人浏览过

|

来源于segmentfault

转载

本篇文章给大家分享几个javascript判断对象是否为数组的的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

JavaScript判断一个对象是否为数组的几种方法(总结)

在 JS 中使用数组是一种常见操作,有时在开发中,获得一个需要作为数组的变量,但是我们不确定它是否是数组,那要怎么去判断是否为数组呢?

JS 中的非原始数据类型都是对象(函数具有自己的类型,但它们也是对象)。 因此,仅使用typeof运算符来判断是不够的:

let result = { subject: 'Science', marks: 97 };
let numbers = [1, 2, 3, 4, 5];

console.log(typeof result); // Object
console.log(typeof numbers); // Object

在本文中,我们来研究如何在 JS 中检查给定变量或值是否为数组。【相关教程推荐:JavaScript视频教程

立即学习Java免费学习笔记(深入)”;

使用 Array.isArray() 方法

顾名思义,此方法可用于识别给定参数是否为数组,它返回一个布尔值(true/false)和结果。

例如,使用以下变量,Array.isArray()方法可以正确判断是否为数组:

let result = { subject: "Science", marks: 97 }; // Object
let numbers = [1, 2, 3, 4, 5]; // Array
let name = "Mark"; // String
let names = new Array("Jill", "Jane", "Jacqueline");

console.log(Array.isArray(result)); // false
console.log(Array.isArray(numbers)); // true
console.log(Array.isArray(name)); // false
console.log(Array.isArray(names)); // true

使用对象的构造函数属性

每个对象都有一个constructor 属性(除了使用object.create(null)创建的对象,这种情况不太可能出现)。我们可以直接将constructor 属性与 JS 的构造函数进行比较。因此,如果我们将它与数组构造函数进行比较,就会知道它是否是数组。

注意:构造函数是用来初始化对象的函数。如果使用new关键字创建了一个对象,那么使用的是构造函数。例如,在let myArray = new Array(1,2)中,使用的构造函数是Array()

可以使用constructor 属性来确定变量是否是数组:

美间AI
美间AI

美间AI:让设计更简单

下载
let result = { subject: "Science", marks: 97 };
let numbers = [1, 2, 3, 4, 5];
let name = "Mark";
let names = new Array("小智", "小力", "小吴");

console.log(result.constructor === Array); // false
console.log(numbers.constructor === Array); // true
console.log(name.constructor === Array); // false
console.log(names.constructor === Array); // true

使用 instanceof 运算符

instanceof运算符检查是否在对象的原型链中找到构造函数。

typeof运算符一样,它返回布尔值。 要确定变量是否为数组,可以使用instanceof,如下所示:

let result = { subject: "Science", marks: 97 };
let numbers = [1, 2, 3, 4, 5];
let name = "Mark";
let names = new Array("小智", "小力", "小吴");

console.log(result instanceof Array); // false
console.log(numbers instanceof Array); // true
console.log(name instanceof Array); // false
console.log(names instanceof Array); // true

使用 Object.prototype.call() 方法

JS 中的所有对象均从主原型对象继承属性,该对象命名为Object.prototypeObject.prototype中存在toString()方法,这是每个对象都有自己的toString()方法的原因, Object.prototypetoString()方法显示对象的类型。

对象的call()方法执行一个函数,但将this 值更改为传入参数的对象,例如,它允许一个对象使用另一个对象的方法。

因此,我们可以使用Object.prototype.toString()来打印类型,然后使用call()来处理另一个对象,然后比较这个字符串值以确定它是否是一个数组。

let result = { subject: "Science", marks: 97 };
let numbers = [1, 2, 3, 4, 5];
let name = "Mark";
let names = new Array("小智", "小力", "小吴");

console.log(Object.prototype.toString.call(result)); // [object Object]
console.log(Object.prototype.toString.call(numbers)); // [object Array]
console.log(Object.prototype.toString.call(name)); // [object String]
console.log(Object.prototype.toString.call(names)); // [object Array]

console.log(Object.prototype.toString.call(result) === "[object Array]"); // false
console.log(Object.prototype.toString.call(numbers) === "[object Array]"); // true
console.log(Object.prototype.toString.call(name) === "[object Array]"); // false
console.log(Object.prototype.toString.call(names) === "[object Array]"); // true

我们不太可能使用这个方法,但是了解更多关于 JS 对象的知识是没有坏处的

总结

在本文中,我们研究了 JS 中确定对象是否是数组的几种方法。最简单的方法是Array.isArray()方法,以后大部小伙伴可能就是用它了。

但是,我们还可以利用instanceof运算符和其他对象属性来确定它是否为数组。

原文地址:https://stackabuse.com/javascript-check-if-object-is-array/作者:Guest Contributor译文地址:https://segmentfault.com/a/1190000038661505

更多编程相关知识,请访问:编程视频!!

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

86

2025.12.26

压缩文件加密教程汇总
压缩文件加密教程汇总

本专题整合了压缩文件加密教程,阅读专题下面的文章了解更多详细教程。

50

2025.12.26

wifi无ip分配
wifi无ip分配

本专题整合了wifi无ip分配相关教程,阅读专题下面的文章了解更多详细教程。

100

2025.12.26

漫蛙漫画入口网址
漫蛙漫画入口网址

本专题整合了漫蛙入口网址大全,阅读下面的文章领取更多入口。

293

2025.12.26

b站看视频入口合集
b站看视频入口合集

本专题整合了b站哔哩哔哩相关入口合集,阅读下面的文章查看更多入口。

589

2025.12.26

俄罗斯搜索引擎yandex入口汇总
俄罗斯搜索引擎yandex入口汇总

本专题整合了俄罗斯搜索引擎yandex相关入口合集,阅读下面的文章查看更多入口。

725

2025.12.26

虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

63

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

30

2025.12.25

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

94

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 1.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号