JavaScript >> Javascript 文檔 >  >> Tags >> object

JavaScript:檢查對像是否為數組

簡介

在 JavaScript 中使用數組是一種常見的活動。有時我們在 JavaScript 中得到一個變量,我們需要它是一個數組,但我們不確定它是不是。

JavaScript 中的非原始數據類型都是對象(函數有自己的類型,但它們也是對象)。因此,僅使用 typeof 是不夠的 常用來判斷數據類型的運算符:

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

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

在本文中,我們將了解如何在 JavaScript 中檢查給定的變量或值是否為數組。

使用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) 創建的對象除外 ,不太可能發生)。我們可以直接將構造函數屬性與 JavaScript 的 構造函數 進行比較 .因此,如果我們將它與數組構造函數進行比較,我們就會知道它是否是一個數組。

注意 :構造函數是初始化對象的函數。如果您使用 new 創建了一個對象 關鍵字,您是使用構造函數完成的。例如,在 let myArray = new Array(1, 2) 使用的構造函數是 Array() .

您可以使用構造函數屬性來確定變量是否為數組:

免費電子書:Git Essentials

查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!

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

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 運算符檢查是否在對象的原型鏈中找到構造函數。如果您不太熟悉 JavaScript 的原型繼承,則運算符會檢查對像是否由類創建,如果不是,則檢查對像是否派生自該類。

typeof 運算符,它返回一個布爾值。要判斷一個變量是否是一個數組,我們可以使用 instanceof 像這樣:

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

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() 方法

JavaScript 中的所有對像都從主原型對象繼承屬性,恰當地命名為 Object.prototype .一個 toString() Object.prototype 中存在方法 ,這就是為什麼每個對像都有一個 toString() 自己的方法。 toString() Object.prototype的方法 顯示對象的類型。

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("Jill", "Jane", "Jacqueline");

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

您不太可能會使用此方法,但了解更多有關 JavaScript 對象的信息永遠不會有什麼壞處!

結論

在本文中,我們研究了 JavaScript 中確定對像是否為數組的幾種方法。最簡單的方法是 Array.isArray() 最有可能在生產中使用的方法。

但是,我們總是可以利用 instanceof 運算符和其他對象屬性來判斷它是否是一個數組。


Tutorial JavaScript 教程
  1. 我們向來自 156 個國家/地區的開發人員發送了 304,654 次編碼測試——這就是我們學到的

  2. Flutter Web 和 WASM

  3. 2011 年 9 月的 10 個新 jQuery 插件

  4. 單倉庫。 2022

  5. Docker 終極指南 - 從 Docker 到 Docker 化 Node.js 應用程序

  6. 為什麼人們還沒有轉向 Svelte

  7. 不變性和你:第 3 部分

  1. 拓撲排序,解決谷歌面試問題

  2. void 類型不存在屬性

  3. 使用 Prisma 的數據代理解決無服務器世界中的數據庫連接問題

  4. 如何在未調用的文件之外調用 useMap()?

  5. 如何知道用戶的滾動是向上還是向下?

  6. 使用串聯(動態)字符串作為 JavaScript 對象鍵?

  7. 如何使 Nuxt.Js 應用程序對 SEO 友好

  1. 為什麼這個回調中的條件總是返回false?

  2. 如何創建一個新的 Django 項目:分步指南

  3. Angular 9:延遲加載組件

  4. Jamstack 如何掌握核心 Web Vitals 的關鍵?