簡單的方法
判斷兩個數組是否相同不能直接用==或者===來判斷,結果都是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的情況下,遞歸的進行抹平。
---------------------
------------------------
或者: