美文网首页
判断数组相等(完全相等)

判断数组相等(完全相等)

作者: 九千_ | 来源:发表于2019-04-09 11:11 被阅读0次

简单的方法

判断两个数组是否相同不能直接用==或者===来判断,结果都是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])

1

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

---------------------

原文出处

------------------------

或者:

相关文章

网友评论

      本文标题:判断数组相等(完全相等)

      本文链接:https://www.haomeiwen.com/subject/eqtbiqtx.html