我想了解更多判断数组的方式

简介: 9021年底了,突然想在这个最后一个月准备一下,试试机会,能否更进一步。所以开始准备一些基础知识,也随带总结出来给各位想换工作的同学。希望大家能找到自己想要的工作。祝大家好运!


9021年底了,突然想在这个最后一个月准备一下,试试机会,能否更进一步。所以开始准备一些基础知识,也随带总结出来给各位想换工作的同学。希望大家能找到自己想要的工作。祝大家好运!


如果你知道更多的方式评论给我。谢谢!

总结回顾


一、instanceof


var array = [];
array instanceof Array;


PS:instanceof的实现原理(判断左边对象的原型链上是否存在右边原型)


function myInstanceof(left, right) {
    let right = right.prototype;
    let left = left.__proto__;
    while (true) {
        if (left === null || rigth === undefined) {
            return false;
        } else {
            if (left === right) {
                return true;
            } else {
                left = left.__proto__;
            }
        }
    }
}
复制代码


二、constructor


var array = [];
array.constructor === Array


PS:instanceof和constructor判断的变量,必须在当前页面申明的,比如,一个页面(父页面)一样一个框架,框架中引入一个页面(子页面),在子页面中声明的array,并将其复制给父元素的一个变量,判断该变量,将返回false。

原因:array是复合类型。在传递的过程中,仅仅是引用地址的传递。 每个页面的array原生对象引用的地址是不一样的,在子页面中声明的array,所对应的构造函数,是子页面的array对象,在父页面进行判断时,使用的并不是子页面的array;


三、__ proto__.constructor


var array = [];
array.__proto__.constructor === Array;


每个对象都有一个__proto__属性,该属性指向构造函数的原型对象,对象可以通过这个属性访问到构造函数的原型对象,__proto__属性是没有写入ES6正文的属性, 而是写入了附录中,原因是他本质上是一个内部属性,而不是一个正式的API,只是被浏览器广泛支持,才被加入ES6,只有浏览器有这个属性,其他环境是没有。所以重某种角度来说,我们是不建议在实际生产中使用的,而是使用Object.getPrototypeOf(target)来进行操作。


var array = [];
Object.getPrototypeOf(array).constructor === Array;
复制代码


四、Array.isArray



var array = [];
Array.isArray(array);


es6中加入了新的判断方法,存在兼容性问题。


五、toString(最常用)


考虑Array.isArray的兼容性问题


if(!Array.isArray){
    Array.isArray = function(arg){
        return Object.prototype.toString.call(arg)==='[object Array]';
    }
}
var array = [];
Array.isArray(array);
目录
相关文章
|
6月前
阿里云RPA元素出现后,有个返回结果 ,需要拿这个结果再去做判断吗?这个判断的操作 如何 处理
【2月更文挑战第8天】阿里云RPA元素出现后,有个返回结果 ,需要拿这个结果再去做判断吗?这个判断的操作 如何 处理
112 3
|
6月前
|
JavaScript 前端开发 索引
如何判断一个值是否在数组内?
如何判断一个值是否在数组内?
|
8天前
|
数据挖掘 Python
如何判断处理后的数据是否仍然存在重复值?
通过以上任意一种方法,都可以有效地判断处理后的数据是否仍然存在重复值,从而确保数据的准确性和唯一性,为后续的数据分析和处理提供可靠的数据基础。
41 10
|
5月前
|
索引
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
|
5月前
数组\OX游戏判断部分(数组+函数)
数组\OX游戏判断部分(数组+函数)
27 0
|
前端开发 数据格式
关于三个数组的判断
关于三个数组的判断
47 0
判断变量是否为数组的几种方法
判断变量是否为数组的几种方法
155 0
|
前端开发
判断数组对象中是否满足某条件
判断数组对象中是否满足某条件
35 0
|
6月前
判断两个不重复的list集合是否相等 只比较元素值 不比较顺序
判断两个不重复的list集合是否相等 只比较元素值 不比较顺序
62 0
|
JSON C# 数据格式
数组比较的几种方式
1、string.Equals() ```csharp string[] strList1= new string[3] {"1", "2", "3"}; string[] strList2= new string[3] {"4", "5", "6"}; if (!string.Equals(strList1, strList2)) { // 比较数组的不同之处 } // 涉及到修改日志输出等数组可以直接json序列化然后用上述方法比较即可,如下 if (!string.Equals(JsonConvert.SerializeObject(list1), JsonConvert
78 0