javascript 中数组对象去重的最完整方法

数组对象去重利用obj

var arr = [
	{ name:'测试',key:'123456' },
	{ name:'测试1',key:'1234566' },
	{ name:'测试2',key:'12345666' },
	{ name:'测试2',key:'12345666' }
]//未去重的数组
var result = []//去重之后的数组
var obj = {}//用于去重的对象
for(var i =0;i<arr.lenght;i++){
	if(!obj[arr[i].key]){
		result.push(arr[i])
		obj[arr[i].key] = true
	}
}

数组对象去重reduce

var arr = [
	{ name:'测试',key:'123456' },
	{ name:'测试1',key:'1234566' },
	{ name:'测试2',key:'12345666' },
	{ name:'测试2',key:'12345666' }
]//未去重的数组
var obj = {}
var newArr = arr.reduce(function(item,next){
	obj[item.key]?'':obj[item.next] = true&&item.push(next)
	return item
},[])

数组对象去重every

var temp = []
function duplicate (){
	arr.forEach(item=>{
		//every数组中的每一个元素都会执行
		var check = temp.every(function(b){
			return item.key !== b.key
		})
		check?temp.push(item):''
	})
}

数组数字去重

es6提供了一个set可以直接对js数字数组去重

var arr = [1,1,2,3,4,5,6,6]
var newArr = Array.from(new Set(arr))//返回去重之后的数组

数组去重indexOf

function unique(arr){
 	var arr1 = [];       // 新建一个数组来存放arr中的值
    for(var i=0,len=arr.length;i<len;i++){
	    if(arr1.indexOf(arr[i]) === -1){
	    	arr1.push(arr[i]);
        }
  }
  return arr1;
}

数组去重filter

/*
模拟: 原始数组:[1,2,8,9,5,8,4,0,4]
索引值:0,1,2,3,4,5,6,7,8
伪新数组:[1,2,8,9,5,8,4,0,4]
使用indexOf方法找到数组中的元素在元素在中第一次出现的索引值
索引值:0,1,2,3,4,2,6,7,6
返回前后索引值相同的元素:
新数组:[1,2,8,9,5,4,0]        
 */
function unique( arr ){
// 如果新数组的当前元素的索引值 == 该元素在原始数组中的第一个索引,则返回当前元素
 return arr.filter(function(item,index){
     return arr.indexOf(item,0) === index;
 });
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值