js数组与伪数组分辨

常见的伪数组是由元素获取的到的如:document.getElementsByTagName(‘li’)

数组于伪数组的差别有不具有数组所具有的方法和伪数组的length属性是静态的不可变

分辨

1.console.log打印出来
可以打印出来分辨:
真数组:
在这里插入图片描述
伪数组:
在这里插入图片描述

或者__proto__是object;总之不是Array

2.Array.isArray()
这个方法可以判断该对象是不是数组。是数组就返回true,不是数组就返回false

Array.isArray(arr)

3.Object.prototype.toString.call(arr)
这个方法可以精确判断对象的类型;
之前常用的typeof 并不能判断伪数组:在这里插入图片描述

都返回object;
但是Object.prototype.toString.call(arr):
在这里插入图片描述
能返回准确的类型;

4.使用数组的方法
伪数组不是数组他只是有数组的属性但不能使用数组的方法所以其实可以使用这个特性来判断比如:
在这里插入图片描述
伪数组使用数组的方法就会报错;

5.《javascript权威指南》上给出了代码用来判断一个对象是否属于“伪数组

function isArrayLike(o){
    if(o &&                                       //o非null.undefined
        typeof o === "object" &&                  //o是对象
        isFinite(o.length) &&                     //o.length是有限数值
        o.length > 0 &&                           //o.length为非负数
        o.length === Math.floor(o.length) &&      //o.length是整数
        o.length < 4294967296 ){                  //o.length<2^32         
        return true;
    }else{
        return false;
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
区分真数组伪数组的方法有以下几种: 1. 使用`Array.isArray()`方法:这是一种最简单的方法,可以通过`Array.isArray()`方法来判断一个对象是否为真数组。如果返回值为`true`,则表示该对象是一个真数组;如果返回值为`false`,则表示该对象是一个伪数组。 ```javascript var arr = [1, 2, 3]; var obj = {0: 1, 1: 2, 2: 3, length: 3}; console.log(Array.isArray(arr)); // 输出:true console.log(Array.isArray(obj)); // 输出:false ``` 2. 使用`instanceof`操作符:可以使用`instanceof`操作符来判断一个对象是否为数组的实例。如果返回值为`true`,则表示该对象是一个真数组;如果返回值为`false`,则表示该对象是一个伪数组。 ```javascript var arr = [1, 2, 3]; var obj = {0: 1, 1: 2, 2: 3, length: 3}; console.log(arr instanceof Array); // 输出:true console.log(obj instanceof Array); // 输出:false ``` 3. 判断对象的类型和属性:可以使用`typeof`操作符来判断对象的类型,如果返回值为`object`,则表示该对象是一个伪数组。此外,伪数组通常具有`length`属性,可以通过判断对象是否具有`length`属性来区分真数组伪数组。 ```javascript var arr = [1, 2, 3]; var obj = {0: 1, 1: 2, 2: 3, length: 3}; console.log(typeof arr); // 输出:object console.log(typeof obj); // 输出:object console.log('length' in arr); // 输出:true console.log('length' in obj); // 输出:true ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值