优秀的编程知识分享平台

网站首页 > 技术文章 正文

Javascript判断变量是对象和数组

nanyue 2025-03-07 22:29:38 技术文章 1 ℃


在 JavaScript 中,判断一个值是对象还是数组是常见的需求。以下是几种常用的方法及其详细说明。


1.使用typeof运算符

typeof 可以判断一个值是否为对象,但无法区分数组和普通对象。

示例:

const obj = {};
const arr = [];

console.log(typeof obj); // "object"
console.log(typeof arr); // "object"

说明:

  • typeof 对于对象和数组都返回 "object",无法区分数组。

2.使用Array.isArray()

Array.isArray() 是专门用于判断一个值是否为数组的方法。

示例:

const obj = {};
const arr = [];

console.log(Array.isArray(obj)); // false
console.log(Array.isArray(arr)); // true

说明:

  • Array.isArray() 是最可靠和推荐的方法来判断数组。

3.使用instanceof运算符

instanceof 可以判断一个对象的原型链中是否包含某个构造函数。

示例:

const obj = {};
const arr = [];

console.log(obj instanceof Object); // true
console.log(arr instanceof Array);  // true
console.log(arr instanceof Object); // true

说明:

  • arr instanceof Array 返回 true,因为数组是 Array 的实例。
  • arr instanceof Object 也返回 true,因为数组也是对象。

4.使用Object.prototype.toString

Object.prototype.toString 可以返回对象的内部 [[Class]] 属性,适用于判断类型。

示例:

const obj = {};
const arr = [];

console.log(Object.prototype.toString.call(obj)); // "[object Object]"
console.log(Object.prototype.toString.call(arr)); // "[object Array]"

说明:

  • Object.prototype.toString.call(obj) 返回 "[object Object]"。
  • Object.prototype.toString.call(arr) 返回 "[object Array]"。
  • 这种方法可以区分对象、数组以及其他类型(如 "[object String]")。

5.判断对象是否为普通对象

如果需要判断一个对象是否为普通对象(Object),而不是数组、函数等,可以使用以下方法。

示例:

function isPlainObject(value) {
  return Object.prototype.toString.call(value) === '[object Object]';
}

const obj = {};
const arr = [];

console.log(isPlainObject(obj)); // true
console.log(isPlainObject(arr)); // false

说明:

  • 这种方法可以区分普通对象和数组。

6.总结:推荐方法

方法

适用场景

示例

Array.isArray()

判断是否为数组

Array.isArray(arr)

Object.prototype.toString

精确判断类型

Object.prototype.toString.call(arr)

typeof

判断是否为对象(不区分数组)

typeof obj

instanceof

判断是否为数组或对象

arr instanceof Array


7.综合示例

以下是一个综合判断对象和数组的函数:

function getType(value) {
  if (Array.isArray(value)) {
    return 'array';
  } else if (Object.prototype.toString.call(value) === '[object Object]') {
    return 'object';
  } else {
    return 'unknown';
  }
}

console.log(getType({})); // "object"
console.log(getType([])); // "array"
console.log(getType(123)); // "unknown"

通过以上方法,你可以准确判断 JavaScript 中的对象和数组

最近发表
标签列表