目錄
二、constructor判斷" >二、constructor判斷
三、instanceof 判斷" >三、instanceof 判斷
四、原型鏈上的isPrototypeOf判斷" >四、原型鏈上的isPrototypeOf判斷
五、Object.prototype.toString" >五、Object.prototype.toString
六、Array 原型鏈上的isPrototypeOf" >六、Array 原型鏈上的isPrototypeOf
順便複習一下typeof的用法: " >順便複習一下typeof的用法:
首頁 web前端 js教程 JS判斷是否為陣列的6種方式

JS判斷是否為陣列的6種方式

Jan 11, 2021 pm 06:29 PM
javascript 陣列

JS判斷是否為陣列的6種方式

相關推薦:《javascript影片教學

一、Array.isArray判斷

用法:Array.isArray(arr)

ES5中新增了Array.isArray方法,IE8及以下不支援

Array.isArray() 用於確定傳遞的值是否為[Array], 傳回布林值true;否則它傳回false。

let arr = [];
console.log(Array.isArray(arr)); // true
登入後複製
// 下面的函数调用都返回 true
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
Array.isArray(new Array('a', 'b', 'c', 'd'))
// 鲜为人知的事实:其实 Array.prototype 也是一个数组。
Array.isArray(Array.prototype);
登入後複製

二、constructor判斷

#用法:arr.constructor === Array

#Object的每個實例都有建構子constructor,用來保存著用來建立目前物件的函式

let arr = [];
console.log(arr.constructor === Array); // true
登入後複製

三、instanceof 判斷

用法:arr instanceof Array

instanceof 主要是用來判斷某個實例是否屬於某個物件

let arr = [];
console.log(arr instanceof Array); // true
登入後複製

註:instanceof運算子的問題在於,它假定只有一個全域環境。如果網頁中包含多個框架,那麼實際上就存在兩個以上不同的全域執行環境,從而存在兩個以上不同版本的Array建構子。如果你從一個框架向另一個框架傳入一個數組,那麼傳入的數組與在第二個框架中原生創建的數組分別具有各自不同的構造函數。 (紅寶書88頁上的原話)

四、原型鏈上的isPrototypeOf判斷

##用法:Array.prototype.isPrototypeOf(arr)

#Array.prototype  屬性表示Array 建構子的原型

#isPrototypeOf()可以用來測試一個物件是否存在於另一個物件的原型鏈上。

let arr = [];
console.log(Array.prototype.isPrototypeOf(arr)); // true
登入後複製
登入後複製

五、Object.prototype.toString

#用法:Object.prototype.toString.call (arr) === '[object Array]'

Array繼承自Object,JavaScript在

Array.prototype上重寫了toString,toString.call( arr)其實是透過原型鏈呼叫了。

let arr = [];
console.log(Object.prototype.toString.call(arr) === '[object Array]'); // true
登入後複製

六、Array 原型鏈上的isPrototypeOf

用法:Array.prototype.isPrototypeOf( arr)

Array.prototype  屬性表示Array 建構子的原型

let arr = [];
console.log(Array.prototype.isPrototypeOf(arr)); // true
登入後複製
登入後複製

順便複習一下typeof的用法:

對於引用類型,不能用typeof來判斷,因為傳回的都是object

// 基本类型
typeof 123;  //number
typeof "abc"; //string
typeof true; //boolean
typeof undefined; //undefined
typeof null; //object
var s = Symbol;
typeof s; //symbol

// 引用类型
typeof [1,2,3]; //object
typeof {}; //object
typeof function(){}; //function
typeof  Array; //function  Array类型的构造函数
typeof Object; //function  Object类型的构造函数
typeof Symbol; //function  Symbol类型的构造函数
typeof Number; //function  Number类型的构造函数
typeof String; //function  String类型的构造函数
typeof Boolean; //function  Boolean类型的构造函数
登入後複製
更多程式相關知識,請造訪:

程式設計學習! !

以上是JS判斷是否為陣列的6種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用 foreach 迴圈移除 PHP 陣列中的重複元素? 如何使用 foreach 迴圈移除 PHP 陣列中的重複元素? Apr 27, 2024 am 11:33 AM

使用foreach循環移除PHP數組中重複元素的方法如下:遍歷數組,若元素已存在且當前位置不是第一個出現的位置,則刪除它。舉例而言,若資料庫查詢結果有重複記錄,可使用此方法移除,得到不含重複記錄的結果。

PHP數組深度複製的藝術:使用不同方法完美複製 PHP數組深度複製的藝術:使用不同方法完美複製 May 01, 2024 pm 12:30 PM

PHP中深度複製數組的方法包括:使用json_decode和json_encode進行JSON編碼和解碼。使用array_map和clone進行深度複製鍵和值的副本。使用serialize和unserialize進行序列化和反序列化。

PHP 陣列鍵值翻轉:不同方法的效能比較分析 PHP 陣列鍵值翻轉:不同方法的效能比較分析 May 03, 2024 pm 09:03 PM

PHP數組鍵值翻轉方法效能比較顯示:array_flip()函數在大型數組(超過100萬個元素)下比for迴圈效能更優,耗時更短。手動翻轉鍵值的for迴圈方法耗時相對較長。

PHP數組多維排序實戰:從簡單到複雜場景 PHP數組多維排序實戰:從簡單到複雜場景 Apr 29, 2024 pm 09:12 PM

多維數組排序可分為單列排序和嵌套排序。單列排序可使用array_multisort()函數依列排序;巢狀排序需要遞歸函數遍歷陣列並排序。實戰案例包括按產品名稱排序和按銷售量和價格複合排序。

PHP 數組分組函數在資料整理的應用 PHP 數組分組函數在資料整理的應用 May 04, 2024 pm 01:03 PM

PHP的array_group_by函數可依鍵或閉包函數將陣列中的元素分組,傳回關聯數組,其中鍵為組名,值是屬於該組的元素數組。

深度複製PHP數組的最佳實踐:探索高效的方法 深度複製PHP數組的最佳實踐:探索高效的方法 Apr 30, 2024 pm 03:42 PM

在PHP中執行陣列深度複製的最佳實踐是:使用json_decode(json_encode($arr))將陣列轉換為JSON字串,然後再轉換回陣列。使用unserialize(serialize($arr))將陣列序列化為字串,然後將其反序列化為新陣列。使用RecursiveIteratorIterator迭代器對多維數組進行遞歸遍歷。

PHP 陣列分組函數在尋找重複元素中的作用 PHP 陣列分組函數在尋找重複元素中的作用 May 05, 2024 am 09:21 AM

PHP的array_group()函數可用來按指定鍵對陣列進行分組,以尋找重複元素。函數透過以下步驟運作:使用key_callback指定分組鍵。可選地使用value_callback確定分組值。對分組元素進行計數並識別重複項。因此,array_group()函數對於尋找和處理重複元素非常有用。

PHP 數組合併去重演算法:平行的解決方案 PHP 數組合併去重演算法:平行的解決方案 Apr 18, 2024 pm 02:30 PM

PHP數組合併去重演算法提供了平行的解決方案,將原始陣列分成小塊並行處理,主進程合併區塊的結果去重。演算法步驟:分割原始數組為均等分​​配的小塊。並行處理每個區塊去重。合併區塊結果並再次去重。

See all articles