简单的方法
判断两个数组是否相同不能直接用==或者===来判断,结果都是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的情况下,递归的进行抹平。
---------------------
------------------------
或者: