• 技术文章 >web前端 >前端问答

    es6怎么判断两个数组是否相等

    青灯夜游青灯夜游2022-10-18 19:54:55原创368

    步骤:1、用length属性获取两个数组的长度,并判断两长度是否相等,语法“数组1.length==数组2.length”;2、如果长度相等,则用“new Set(数组)”将两数组都转换为set类型,用“Array.from(new Set([...集合1].filter(x=>集合2.has(x))))”获取差集;3、判断差集数组是否为空数组,如果是则两数组相同,反之不相等。

    大前端成长进阶课程:进入学习

    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。

    判断两个数组是否相等,可以转换思想变为判断两个数组的长度是否相等且差集(包含不同元素)是否为空。

    实现思想:

    说明:如果数组有重复值,其数组长度不同,但没有不相同的元素(差集为空)

    var a=[1, 2, 3];
    var b=[1,2,3,1,3];

    1.png

    但这样的两个数组不可能相等,因此需要先判断数组长度是否相等。

    实现步骤:

    步骤1、使用length属性分别获取两个数组的长度,并判断两长度是否相等

    每个数组都有一个length 属性,利用该属性可返回数组的最大长度,即其值等于最大下标值加 1。

    var a=[1, 2, 3];
    var b=[1, 2, 3];
    console.log(a);
    console.log(b);
    
    if(a.length==b.length){
    	console.log("两数组的长度相等");
    }else{
    	console.log("两数组的长度不相等");
    }

    2.png

    步骤2:如果两长度相等,则利用has()、filter()、from()方法来获取两数组的差集

    has() 是set对象的一个方法,因此想要使用has()方法,需要先将数组转为set集合类型。

    newA = new Set(a);
    newB = new Set(b);

    set对象的has() 方法配合数组的filter()可以求两个数组的交集,但交集元素会被包含在一个set集合中返回,不好进行为空比较;因此,需要利用Array.from方法将集合转为数组类型。

    let differenceABSet = Array.from(new Set([...newA].filter(x => !newB.has(x))));

    3.png

    说明:

    步骤3:判断差集数组是否为空数组

    if(differenceABSet.length==0){
    	console.log("两数组相等");
    }else{
    	console.log("两数组不相等");
    }

    6.png

    完整实现代码(封装为一个函数)

    function f(a, b) {
    	newA = new Set(a);
    	newB = new Set(b);
    	if (a.length == b.length) {
    		let differenceABSet = Array.from(new Set([...newA].filter(x => !newB.has(x))));
    		console.log("两数组差集:");
    		console.log(differenceABSet);
    		if (differenceABSet.length == 0) {
    			console.log("两数组相等");
    		} else {
    			console.log("两数组不相等");
    		}
    
    	} else {
    		console.log("两数组不相等");
    	}
    }

    示例1:检查下面两个函数是否相等

    var a = [1, 2, 3];
    var b = [1, 2, 3,3];
    console.log(a);
    console.log(b);
    f(a, b);

    4.png

    示例2:检查下面两个函数是否相等

    var a = [1, 2, 3];
    var b = [1, 2, 4];
    console.log(a);
    console.log(b);
    f(a, b);

    7.png

    说明:差集中的元素是从被比较的数组(第一个数组a)中拿的。

    【相关推荐:javascript视频教程编程视频

    以上就是es6怎么判断两个数组是否相等的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:ES6 es6数组
    上一篇:nodejs是否支持es6 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• es6模块输出的值是拷贝的吗• webpack怎么将es6转成es5的模块• es6怎么检测两个数组是否有相同项• concat是es6语法吗• es6中迭代数组的方法有哪些
    1/1

    PHP中文网