js 二维数组去重(续)
二维数组去重,说白了就是删除重复项。今天看到有兄弟评论说代码有问题,非常感谢这位兄弟。重新修改了一下代码,如若发现我的其他blog也有问题的话,也希望能指出来,我们一起学习一起提高。代码如下:
/** * 方法一 * @param {*} arr */ const removeRepeat1 = (arr) => { const obj={}; return arr.filter(item=>{ if(!obj[item.toString()]) { obj[item.toString()]=item.toString(); return item; } }); } /** * 方法二 * @param {*} arr */ const removeRepeat2 = (arr) => { const obj={}; arr.forEach(item=>!obj[item.toString()] && (obj[item.toString()]=item)); return Object.values(obj); } // 测试结果 const matrix=[ [1,2,3,4], [3,4,5,6], [1,2,3,4] ] const ans1=removeRepeat1(matrix);//[ [ 1, 2, 3, 4 ], [ 3, 4, 5, 6 ] ] const ans2=removeRepeat2(matrix);//[ [ 1, 2, 3, 4 ], [ 3, 4, 5, 6 ] ] console.log(ans1); console.log(ans2);
以上代码并不完善,很多容错都没做,但核心的思想能勾传达出来,即间接的将二维数组转化为一维字符串数组的形式来进行去重。具体容错考虑后面我会添加上去,现在先写下测试用例,即matrix可能有哪些值
二维数组我们暂且称之为矩阵,下面都用这个别名。
- 边界情况,例如null、undefined、非数组、非矩阵
- 矩阵的每一项都是一个对象类型
- 正常情况即数字数组