相等数组判断:数组顺序及元素相同,数组元素相同但顺序不同

判断两个数组是否相等

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));
};

把数组元素排序后,去除重复元素

function  getSetArr(resultArr){   
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) } })
return resultarrNoRepeat
}

 

posted @ 2022-05-24 14:29  千亿昔  阅读(1099)  评论(0编辑  收藏  举报