js多种数组去重和数组中对象去重方法

本文介绍多种数组去重方法,包括双层循环比较、indexOf()、filter()、forEach()及Set()等,并提供对象数组去重实例,如使用indexOf()、includes()及some()等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数组去重方法

  1. 前面一个和后面一个进行比较
for(var i=0;i<arr.length;i++){
      for(var j=i+1;j<arr.length;j++){
        if(arr[j] == arr[i]){
          arr.splice(j,1);
          j--;
        }
      }
    }
    console.log(arr);
  1. 使用indexOf()方法
var arr1 = [5,4,10,15,30,40,40,50,30,40];
//定义一个空数组存没有重复的数据
    var temp =[];
    for(var i=0;i<arr1.length;i++){
        if(temp.indexOf(arr1[i]) == -1){
          temp.push(arr1[i]);
      }
    }
    console.log(temp);
  1. 使用filter()方法
var arr3 = [5,4,10,15,30,40,40,50,30,40];
    var arr4=arr3.filter(function(value,index,self){
      return self.indexOf(value) === index;
    });
    console.log(arr4);
  1. 使用forEach()方法
var arr5 = [5,4,10,15,30,40,40,50,30,40];
    var obj ={};
    var res =[];
    arr5.forEach(item =>{
      if(!obj[typeof item + item]){
        obj[typeof item + item] = true;
        return res.push(item);
      }
    })
    console.log(res);
  1. 使用Es6Set()方法
var arr2 = [5,4,10,15,30,40,40,50,30,40];
    var sum = new Set(arr2);
    console.log(sum);

二、数组中对象去重

数组中对象去重和数组去重基本差不多

var str = [
    {name:"张三",id:2},
    {name:"李四",id:3},
    {name:"王五",id:3},
    {name:"赵六",id:2},
    {name:"三七",id:1}
  ]
  1. 前面对象 id 和后面对象 id 比较
for(var i=0;i<str.length-1;i++){
    for(var j=i+1;j<str.length;j++){
      if(str[i].id == str[j].id){
        str.splice(j,1)
      }
    }
  }
  console.log(str);

  1. 使用indexOf()方法
//定义一个空数组存没有重复的数据
 var temp =[];
  //第二种:indexOf
  for(var i=0;i<str.length;i++){
    if(temp.indexOf(str[i].id) == -1){
      temp.push(str[i]);
    }
  }
  console.log(temp);

  1. 使用includes()方法
//定义一个空数组存没有重复的数据
var temp1 =[];
  for(var i=0;i<str.length;i++){
    // 判断是否包含,不包含就添加
    if(!temp1.includes[str[i].id] ){
      temp1.push(str[i]);
    }
  }
    console.log(temp1);

  1. Es6some()方法
var str2 =[];
  for(var val of str){
    if(!str2.some(item => item.id == val.id)){
      str2.push(val);
    }
  }
  console.log(str2);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值