JavaScript中怎么檢查對(duì)象是否為數(shù)組,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)專(zhuān)注于惠安企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站制作。惠安網(wǎng)站建設(shè)公司,為惠安等地區(qū)提供建站服務(wù)。全流程定制制作,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
JS 中的非原始數(shù)據(jù)類(lèi)型都是對(duì)象(函數(shù)具有自己的類(lèi)型,但它們也是對(duì)象)。因此,僅使用typeof運(yùn)算符來(lái)判斷是不夠的:
let result = { subject: 'Science', marks: 97 }; let numbers = [1, 2, 3, 4, 5]; console.log(typeof result); // Object console.log(typeof numbers); // Object
在本文中,我們來(lái)研究如何在 JS 中檢查給定變量或值是否為數(shù)組。
使用 Array.isArray() 方法
顧名思義,此方法可用于識(shí)別給定參數(shù)是否為數(shù)組,它返回一個(gè)布爾值(true/false)和結(jié)果。
例如,使用以下變量,Array.isArray()方法可以正確判斷是否為數(shù)組:
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
使用對(duì)象的構(gòu)造函數(shù)屬性
每個(gè)對(duì)象都有一個(gè)constructor 屬性(除了使用object.create(null)創(chuàng)建的對(duì)象,這種情況不太可能出現(xiàn))。我們可以直接將constructor 屬性與 JS 的構(gòu)造函數(shù)進(jìn)行比較。因此,如果我們將它與數(shù)組構(gòu)造函數(shù)進(jìn)行比較,就會(huì)知道它是否是數(shù)組。
注意:構(gòu)造函數(shù)是用來(lái)初始化對(duì)象的函數(shù)。如果使用new關(guān)鍵字創(chuàng)建了一個(gè)對(duì)象,那么使用的是構(gòu)造函數(shù)。例如,在let myArray = new Array(1,2)中,使用的構(gòu)造函數(shù)是Array()。
可以使用constructor 屬性來(lái)確定變量是否是數(shù)組:
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 運(yùn)算符instanceof運(yùn)算符檢查是否在對(duì)象的原型鏈中找到構(gòu)造函數(shù)。
像typeof運(yùn)算符一樣,它返回布爾值。要確定變量是否為數(shù)組,可以使用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 中的所有對(duì)象均從主原型對(duì)象繼承屬性,該對(duì)象命名為Object.prototype。Object.prototype中存在toString()方法,這是每個(gè)對(duì)象都有自己的toString()方法的原因, Object.prototype的 toString()方法顯示對(duì)象的類(lèi)型。
對(duì)象的call()方法執(zhí)行一個(gè)函數(shù),但將this 值更改為傳入?yún)?shù)的對(duì)象,例如,它允許一個(gè)對(duì)象使用另一個(gè)對(duì)象的方法。
因此,我們可以使用Object.prototype.toString()來(lái)打印類(lèi)型,然后使用call()來(lái)處理另一個(gè)對(duì)象,然后比較這個(gè)字符串值以確定它是否是一個(gè)數(shù)組。
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
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。