数组对象重复问题解析
项目中,我们常用的数组往往是数组对象,本文也就数组对象的重复与否,找出重复项,去掉重复项等来分析做法。
案例为:
vararr=[{"id":1,"name":"张三"},{"id":2,"name":"李四"},{"id":3,"name":"王五"},{"id":2,"name":"张三"}];
判断判断是否重复
vararr=[{"id":1,"name":"张三"},{"id":2,"name":"李四"},{"id":3,"name":"王五"},{"id":2,"name":"张三"}];//用arr的id生成一个新的数组constnewArr=arr.map(value=>value.name)//将这个数组去重constDuplicateDelete=newSet(newArr)//判断两个数组的长度是否相等if([...DuplicateDelete].length===arr.length){console.log('没有重复')}else{console.log('重复了')}
找出重复项
//接着以上代码letduplicates=newArrDuplicateDelete.forEach((item)=>{consti=duplicates.indexOf(item)duplicates=duplicates.slice(0,i).concat(duplicates.slice(i+1,duplicates.length))})console.log(duplicates)//结果为"张三"
其他数组对象去重方法
//用reduce去重重复项letobj={};arr=arr.reduce(function(item,next){obj[next.name]?'':obj[next.name]=true&&item.push(next);//如果name为'',放入next中,已经存在的就跳过了returnitem;},[]);console.log(arr);
小结
本质在于遍历时拿到数组对象中的某一对键值对来进行操作。