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
運算符和其他對象屬性來判斷它是否是一個數組。