判断数组相等

简单的方法

判断两个数组是否相同不能直接用==或者===来判断,结果都是false

var a = ["type", 2, 3];
var b = ["type", 2, 3];
console.log(a===b)// false
console.log(a==b) // false 

如果要判断两个数组是否相同(元素相同,顺序相同)只需要将两个数组转换为字符串然后再进行比较;

如果要判断两个数组是否有相同的元素(元素相同,顺序可以不同)需要先将数组排序,然后转换为字符串进行比较

var a = ["type", 2, 3];
var b = ["type", 3, 2];
var isSameArray = function (array1, array2) {
    array1 = array1.sort().join('');
    array2 = array2.sort().join('');
    return array1 === array2;
  };
console.log(isSameArray(a, b))//true

上面的方法的缺点是不针对能二维数组进行很好的比较,比如数组的成员是数组或者对象,也不能针对数组成员的类型进行判断,如果一个数组成员是数组5,另个一个是字符串5,判断结果只能是相等

 var a = ["type", [2,3], 3];
  var b = ["type", [3,2], 3];
  //比较数组是否相同的函数
  var isSameArray = function (array1, array2) {
    array1 = array1.sort().join('');
    array2 = array2.sort().join('');
    return array1 === array2;
  };
  console.log(isSameArray(a, b))//false

可以考虑使用lodash的flatten 命令,将数组抹平,然后再进行比较

_.flatten(array, [isDeep])

isDeep为空或者false的情况下,只抹平第一层嵌套。为true的情况下,递归的进行抹平。

更完备的方法

  1. 判断数组长度是否一致
  2. 长度一致通过循环,判断里面各项是否相等,可以参考这里

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值