1. 程式人生 > 其它 >相等陣列判斷:陣列順序及元素相同,陣列元素相同但順序不同

相等陣列判斷:陣列順序及元素相同,陣列元素相同但順序不同

判斷兩個陣列是否相等

1.兩個陣列順序及元素完全相同

2.兩個數組裡面的元素完全相同,但是順序不同

1.兩個陣列順序及元素完全相同

(這邊只考慮簡單型別的陣列型別)

    1.可以轉換成字串進行比較(undefinednull都會 被轉為空字串)

const arr1.join() === arr2.join()

   2.通過JSON.stringify()進行轉換比較(undefinedNaN都會被轉為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)
    }
    })