js两数组是否相交_JavaScript判断两个数组是否相等

首先判断两个数组是否相等时不能直接使用==var array1 = [];

var array2 = [];

console.log(array1 == array2); //输出false

对于对象来说,==比较的是两个对象是否为同一个对象。数组属于对象类型,尽管数组元素是相同的,但这两个数组属于不同的对象,所以==比较为false。

数组简单比较

如果数组里的元素是标量,非object类型,可以使用==比较数组里的元素:scalarArrayEquals(array1,array2) {

return array1.length==array2.length && array1.every(function(v,i) { return v === array2[i]});

}

嵌套数组比较

如果数组是多层嵌套,数组的基本元素也为标量。arrayEquals(array1, array2) {

if(!(array1 || array1)) {

return false;

}

// 先比较长度

if (array1.length != array2.length)

return false;

for (var i = 0, l=array1.length; i 

// 检查是否为内嵌数组

if (array1[i] instanceof Array && array2[i] instanceof Array) {

// 递归比较数组

if (!arrayEquals(array1[i],array2[i]))

return false;

} else if (this[i] != array[i]) { //标量比较

return false;

}

}

return true;

}

Lodash或Underscore比较数组(推荐)

如果数组的元素可能为object,可以考虑使用Lodash或者Underscore。它们已经实现了对象的深度比较,包括数组。

使用Lodash或Underscore比较数组或对象很简单:_.isEqual(array1, array2)   //相等返回true,否则返回false

_.isEqual(object1, object2) //

转为字符串比较数组

除了上面的比较方法外,还可以把数组转换为字符串后,比较字符串。array1.toString() === array2.toString();

或者JSON.stringify(array1) === JSON.stringify(array2);

但相对上面几种方式,转换为字符串后再比较的性能是比较差的。其中以JSON转换为字符串的性能最差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值