在JavaScript中,可以使用Array.isArray()
方法来判断一个变量是否为数组对象。若变量为数组,则该方法返回true
;否则,返回false
。同时,如果我们想要判断一个类数组对象是否为数组,需要进行以下两步操作:
length
属性。因为数组和类数组对象都具有表示其元素数量的length
属性。length-1
。这是由于类数组对象可以模拟数组的行为,但不一定具有数组的所有属性和方法。而此处的条件限制了类数组对象只能在连续索引值(从0开始)上进行迭代。其中,判断对象是否具有索引属性,可以通过Object.keys()
方法获取对象所有的键名,并检查是否全部为数字类型。以下是使用这两个条件判断变量是否为数组或类数组对象的代码:
function isArrayLike(obj) {
if (Array.isArray(obj)) { // 如果是数组,直接返回true
return true;
}
if (typeof obj !== 'object' || obj === null) { // 排除掉null和非object类型
return false;
}
if ('length' in obj && typeof obj.length === 'number') { // 判断是否具有length属性
const length = obj.length;
if (length === 0) { // 空对象也视作类数组
return true;
}
if (length > 0 && (length - 1) in obj) { // 判断最大索引值是否小于等于length-1
return true;
}
}
return false; // 其他情况返回false
}
其中,高亮显示出的关键词分别为:Array.isArray()
、length
、Object.keys()
和in
。