Array.isArray()
函式會檢查傳入的值是否為一個 Array
。
Array.isArray([1, 2, 3]); // true
Array.isArray({foo: 123}); // false
Array.isArray('foobar'); // false
Array.isArray(undefined); // false
語法
Array.isArray(obj)
參數
obj
- 要檢查的物件。
回傳值
若物件為 Array
回傳 true
;否則回傳 false
。
描述
檢查傳入的物件是否為陣列(Array
),如果是便回傳 true
,否則回傳 false
。
更多細節請參考 “Determining with absolute accuracy whether or not a JavaScript object is an array”。
範例
// 下方都回傳 true
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
Array.isArray(new Array('a', 'b', 'c', 'd'));
Array.isArray(new Array(3));
// 小細節:Array.prototype 本身是陣列:
Array.isArray(Array.prototype);
// 下方都回傳 false
Array.isArray();
Array.isArray({});
Array.isArray(null);
Array.isArray(undefined);
Array.isArray(17);
Array.isArray('Array');
Array.isArray(true);
Array.isArray(false);
Array.isArray({ __proto__: Array.prototype });
instanceof vs isArray
當檢查 Array
實例時,Array.isArray
相較於 instanceof
更加推薦,因為它可以穿透 iframes
。
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
xArray = window.frames[window.frames.length-1].Array;
var arr = new xArray(1,2,3); // [1,2,3]
// 正確地檢查陣列型態
Array.isArray(arr); // true
// 有害地,因為它不能在 iframes 之間正常運作
arr instanceof Array; // false
Polyfill
如果 Array.isArray()
不存在於您的環境,在其他程式碼前執行下列程式碼可建置 Array.isArray()
。
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
規範
Specification | Status | Comment |
---|---|---|
ECMAScript 5.1 (ECMA-262) The definition of 'Array.isArray' in that specification. |
Standard | Initial definition. Implemented in JavaScript 1.8.5. |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Array.isArray' in that specification. |
Standard | |
ECMAScript (ECMA-262) The definition of 'Array.isArray' in that specification. |
Living Standard |
瀏覽器相容性
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.