封装公共方法 数组去重,记录去重项、重复项、重复次数

创建名为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数组,去重项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值