簡(jiǎn)單的方法
判斷兩個(gè)數(shù)組是否相同不能直接用==或者===來(lái)判斷,結(jié)果都是false
var a = ["type", 2, 3];
var b = ["type", 2, 3];
console.log(a===b)// false
console.log(a==b) // false
如果要判斷兩個(gè)數(shù)組是否相同(元素相同薄湿,順序相同)只需要將兩個(gè)數(shù)組轉(zhuǎn)換為字符串然后再進(jìn)行比較葵擎;
如果要判斷兩個(gè)數(shù)組是否有相同的元素(元素相同盼樟,順序可以不同)需要先將數(shù)組排序狸捕,然后轉(zhuǎn)換為字符串進(jìn)行比較
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
上面的方法的缺點(diǎn)是不針對(duì)能二維數(shù)組進(jìn)行很好的比較秉犹,比如數(shù)組的成員是數(shù)組或者對(duì)象殖氏,也不能針對(duì)數(shù)組成員的類型進(jìn)行判斷晚树,如果一個(gè)數(shù)組成員是數(shù)組5,另個(gè)一個(gè)是字符串5雅采,判斷結(jié)果只能是相等
var a = ["type", [2,3], 3];
? var b = ["type", [3,2], 3];
? //比較數(shù)組是否相同的函數(shù)
? var isSameArray = function (array1, array2) {
? ? array1 = array1.sort().join('');
? ? array2 = array2.sort().join('');
? ? return array1 === array2;
? };
? console.log(isSameArray(a, b))//false
可以考慮使用lodash的flatten 命令爵憎,將數(shù)組抹平,然后再進(jìn)行比較
_.flatten(array, [isDeep])
1
isDeep為空或者false的情況下婚瓜,只抹平第一層嵌套宝鼓。為true的情況下,遞歸的進(jìn)行抹平巴刻。
---------------------
------------------------
或者: