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