创建名为xxx的js文件写入以下代码
//list 为需要去重的数组,id 为属性名称
export default{
newList(list,id){
var resultObj={};
var result=[];
var result2=[];
var resultList=[];
var resultList2=[];
for(var i=0;i<list.length;i++){
if(result.indexOf(list[i][id])==-1){
result.push(list[i][id]);
resultList.push(list[i]);
}else{
if(result2.indexOf(list[i][id])==-1){
result2.push(list[i][id]);
resultList2.push(list[i]);
}
}
}
var obj={};
list.forEach(v)=>{
if(obj[v[id]]){
obj[v[id]]++;
}else{
obj[v[id]]=1;
}
}
resultObj.result=result;//去重项id
resultObj.resultList=resultList;//去重项
resultObj.result2=result2;//重复项id
resultObj.resultList2=resultList2;//重复项
resultObj.resultList=resultList;//重复次数
return resultObj
},
xxx(){
}//可以写多个方法 引用如下
}
在main.js文件里写入
import moduleJs from 'xxx.js'//实际地址为js文件所在地址
Vue.prototype.$moduleJs = moduleJs;
在组件中写入
//例如
var obj={}
var list=[]
var list2=[
{resultId:'10001',resultName:'xxx'},
{resultId:'10002',resultName:'xxx'},
{resultId:'10003',resultName:'xxx'},
{resultId:'10004',resultName:'xxx'}
]
var list3=[
{resultId:'10001',resultName:'xxx'},
{resultId:'10002',resultName:'xxx'},
{resultId:'10003',resultName:'xxx'}
]
list = list2.concat(...list3);
obj=this.$moduleJs.newList(list,resultId)
console.log(obj)
如果属性内容长度不一致需要全等可以把判断改为
//例如
var list=[
{resultId:'10001',resultName:'xxx100'},
{resultId:'10002',resultName:'xxx10001'},
{resultId:'10003',resultName:'xxx10001'},
{resultId:'10004',resultName:'xxx10002'},
{resultId:'10005',resultName:'xxx10003'}
]
var result =[];
var resultName =[];
var resultList=[];
for(var i=0;i<list.length;i++){
if(result.indexOf('~'+list[i].resultName+'~')==-1){
result.push('~'+list[i].resultName+'~');
resultName.push(list[i].resultName);
resultList.push(list[i]);
}
}
console.log(resultName,resultList)//去重后cardName数组,去重项