相等陣列判斷:陣列順序及元素相同,陣列元素相同但順序不同
阿新 • • 發佈:2022-05-24
判斷兩個陣列是否相等
1.兩個陣列順序及元素完全相同
2.兩個數組裡面的元素完全相同,但是順序不同
1.兩個陣列順序及元素完全相同
(這邊只考慮簡單型別的陣列型別)
1.可以轉換成字串進行比較(undefined
與null
都會 被轉為空字串)
const arr1.join() === arr2.join()
2.通過JSON.stringify()進行轉換比較(undefined
和NaN
都會被轉為null
)
JSON.stringify(arr1) === JSON.stringify(arr2);
缺點:無法比較對比陣列中含有undefined,null的情況
3.通過Object.is()進行比較
通過object.is()對於每項元素進行比較
const isArrEqual = (arr1, arr2) => { return arr1.length === arr2.length && arr1.every((ele, index) => Object.is(ele, arr2[index])); };
2.兩個陣列元素相同但順序不同
在某些情況下,認定元素相同但順序不同的陣列為相同陣列
(但是有重複資料的情況會有問題,eg:[1,0,0,-1]和[1,0,-1, -1]會判斷成相等)
const isArrEqual = (arr1, arr2) => {return arr1.length === arr2.length && arr1.every((ele) => arr2.includes(ele)); };
把陣列元素排序後,去除重複元素
const sortedArr = resultArr.map(item => item.sort()) const empty = [] const resultarrNoRepeat = [] sortedArr.forEach(item => { if (!empty.includes(item.join())) { empty.push(item.join()) resultarrNoRepeat.push(item) } })