怎樣判斷一個JavaScript變量是array還是obiect?
答案:
1、如果你只是用typeof來檢查該變量,不論是array還是object,都將返回‘objec'。
此問題的一個可行的答案是是檢查該變量是不是object,并且檢查該變量是否有數字長度(當為空array時長度也可能為0)。
然而,參數對象【arguments object】(傳給制定函數的所有參數),也可能會適用于上述方法,技術上來說,參數對象并不是一個array。
此外,當一個對象有a.length屬性的時候,這個方法也不成立。
復制代碼 代碼如下:
// Real array 正在的數組
var my_array = [];
// Imposter! 冒名頂替的!
var my_object = {};
my_object.length = 0;
// Potentially faulty 潛在的錯誤
function is_this_an_array(param) {
if (typeof param === 'object' && !isNaN(param.length)) {
console.log('Congrats, you have an array!');
}
else {
console.log('Bummer, not an array');
}
}
// Works 成功
is_this_an_array(my_array);
// Works, but is incorrect 成功了,但是不正確
is_this_an_array(my_object);
復制代碼 代碼如下:
// Real array 真正的數組
var my_array = [];
// Imposter! 冒名頂替的!
var my_object = {};
my_object.length = 0;
// Rock solid 堅如磐石(檢驗函數)
function is_this_an_array(param) {
if (Object.prototype.toString.call(param) === '[object Array]') {
console.log('Congrats, you have an array!');
}
else {
console.log('Bummer, not an array');
}
}
// Works 成功了
is_this_an_array(my_array);
// Not an array, yay! 不是數組(array)!
is_this_an_array(my_object);
復制代碼 代碼如下:
var my_array = [];
if (my_array instanceof Array) {
console.log('Congrats, you have an array!');
}
復制代碼 代碼如下:
var my_array = [];
if (Array.isArray(my_array)) {
console.log('Congrats, you have an array!');
}
新聞熱點
疑難解答
圖片精選