数组中的对象去重方法(使用时将我的参数数组改成你自己的就可以了)

项目开发过程中经常会处理数据,其中数组中的对象去重是最凡人的,今天笔者就将数组当中的对象去重方法分享给大家,大家使用的时候只需要调用这个方法,传入你要去重的数组以及对象的唯一值就可以了。

PS:笔者封装的这个方法不论是参数是对象还是普通的数字或者字符串都可以实现去重

// 首先搞三个数组用来待会测试
// 要进行去重的数组
const arr = [
	{
		id: 1,
		name: '吴迪',
	}, {
		id: 2,
		name: '林增辉',
	}, {
		id: 1,
		name: '吴迪',
	},
];
const arr2 = [1, 2, 3, 1];
const arr3 = ['a', 'b', 'c', 'a'];

 

接下来开始封装去重的方法: 

/**
* 数组去重(对象或者普通数字字符串都可以)
* @param 
* 	arr  要去重的数组  Array类型
*   key	 如果是数组中是对象,key为对象的唯一值,根据此唯一值进行去重,String类型,非必填
* @returns  newArr,去重后的数组,如果没有传递参数则返回空数组
*/
function arrayToHeavy(arr, key) {
	if (!arr) return [];
	if (Object.prototype.toString.call(arr) !== '[object Array]') return console.warn('You need to pass an array to arrayToHeavy!');
	let newArr = [];
	// 普通的数字字符串去重
	if (!key) {
		newArr = Array.from(new Set(arr)); 
        //newArr = [...new Set(arr)]; 对象扩展
	} else {	// 数组对象去重
		const keyArr = [];
		arr.forEach((ite) => {
			if (!keyArr.includes(ite[key])) {
				keyArr.push(ite[key]);
				newArr.push(ite);
			}
		})
	}
	return newArr;
}

此方法中做了些错误处理,

  1. 如果没有传递参数默认返回一个空数组
  2. 如果传递的第一个参数不是一个数组则输出一个warn提示

演示结果:

笔者将我们初始定义的三个数组全部调用了此方法进行过滤,效果还不错~

å¨è¿éæå¥å¾çæè¿°

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值