js数组去重:数组中包含对象,根据对象的某个属性去重
七娃博客343人阅读
最近在工作中用到数组去重,本来以为很简单的问题,Array.from和Set结合直接去重,然后发现没有变化!还以为这个去重方法不管用,又试了“去重大套餐”,发现全部NG。
卧槽,发生了什么,为什么全部失效!
最后发现这些去重套餐只对简单的数组生效,如:["1",1,"1",0,"2"],对于如下的包含对象的数组就不能愉快的玩耍了。
let arr = [ {name:'张三'}, {name:'张三2'}, {name:'张三'}, {name:'张三3'}, ];
原理
然后想到一个骚操作,就是循环这个数组的每一对象的name,作为一个新数组,然后判断这个值是否重复,重复值的索引值与这个对象的索引值是同一位置,然后再过滤掉这个对象。这样就巧妙的解决对数组中包含对象重复去重的方法。代码如下:
function removeDuplicate(arr) { let newArr = []; for(let item of arr){ newArr.push(item.name) } let res = [];//存放去重属性值 let org = [];//存放去重后数组 for (let i=0;i<newArr.length;i++) { if( !res.includes( newArr[i]) ) {//includes 检测数组是否有某个值 res.push(newArr[i]); org.push(arr[i]); } } return org; }
是不是很骚,哈哈哈!当我这样循环出想要的数组之后,隔壁的同事不自觉的竖起了大拇指!真棒,确实是取巧了,巧就巧在索引值一样,去重属性值的时候也在去重对象!好久不更新文章了,最近忙着上班,偶尔开发一下新主题,进度如同蜗牛,粉丝快骂死我了。
评论 | 0 条评论
登录之后才可留言,前往登录