相等数组判断:数组顺序及元素相同,数组元素相同但顺序不同
判断两个数组是否相等
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)); };
把数组元素排序后,去除重复元素
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
}