How to determine whether a JavaScript variable is an array or an obiect?
Answer:
1. If you just use typeof to check the variable, whether it is array or object, it will return 'objec'.
A possible answer to this question is to check whether the variable is an object, and to check whether the variable has a numeric length (the length may also be 0 when it is an empty array).
However, the parameter object [arguments object] (all parameters passed to the specified function) may also be applied to the above method. Technically speaking, the parameter object is not an array.
In addition, when an object has a.length attribute, this method does not hold.
// 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);
2. Another answer to this question is to use a more subtle method, calling the toString() method to try to convert the variable into a string representing its type.
This method is feasible for real arrays; when the parameter object is converted to string and [object Arguments] is returned, the conversion will fail; in addition,
Conversion will also fail for object classes containing numeric length attributes.
// 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);
3. In addition, instanceof is a perfectly suitable operation in a multi-frame DOM environment that may be unreliable.
var my_array = []; if (my_array instanceof Array) { console.log('Congrats, you have an array!'); }
4. For Javascript 1.8.5 (ECMAScript 5), the variable name .isArray() can achieve this purpose
var my_array = []; if (Array.isArray(my_array)) { console.log('Congrats, you have an array!'); }
The above is the detailed content of How to determine whether a JavaScript variable is an array or obiect answer code detailed explanation. For more information, please follow other related articles on the PHP Chinese website!