数组去重方法总结

数组去重方法总结

对目前所学的知识进行个小小的总结,今天总结一下数组去重的方。而且不同的方法会有不同的缺陷,比如不能复杂数据类型等,
1,双重for循环遍历数组

  var arr = [1, 1, 1, 2, 2];
  var newArr = [];
  for (var i = 0; i < arr.length; i++) {
    for (var j = i + 1; j < arr.length; j++) {
      if (arr[i] == arr[j]) {
        i++;
        j = i;
      }
    }
    newArr.push(arr[i]);
  }
  console.log(newArr);

2 通过设置标识位,遍历数组

  var arr = [1, 1, 2, 3, 3, 2, 1, 1, 3, 5];
  var newArr = [];
  for (var i = 0; i < arr.length; i++) {
    var flag = true; 
    for (var j = 0; j < newArr.length; j++) {
      if (arr[i] == newArr[j]) {
        flag = false;
        break;
      }
    }
    if (flag) {
      newArr.push(arr[i]);
    }
  }
  console.log(newArr);
  1. indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

如果没有找到匹配的字符串则返回 -1。

  var arr = [2, 8, 2, 5, 0, 7, 5, 0, 5, 2, 6, 7, 2];
  var newArr = [];
  for (var i = 0; i < arr.length; i++) {
    if (newArr.indexOf(arr[i]) == -1) {
      newArr.push(arr[i]);
    }
  }
  console.log(newArr);

4 同样indexOf()方法

  var arr = [2, 8, 5, 0, 5, 2, 6, 7, 2];
  var newArr = [];
  for (var i = 0; i < arr.length; i++) {
    if (arr.indexOf(arr[i]) === i) {
      // 如果获取的元素的索引相等,则进入新数组,有重复的值时,
      // 等号左边获取的是第一个重复值的索引,索引现在的i不会进入新数组中
      newArr.push(arr[i]);
    }
  }
  console.log(newArr); // 结果:[2, 8, 5, 0, 6, 7]

5 利用对象中属性是无序性的特点去重(对象中属性名不能重复)

  var arr = [5, 7, 8, 7, 6, 6, 7, 7, 8, 8, 4, 3, 4, 6, 5, 9, 7, 8];
  var newObj = {};
  var newArr = [];
  for (var i = 0; i < arr.length; i++) {
    newObj[arr[i]] = 9; //这里了arr[i]表示对象的属性,让arr中的元素等于对象中的属性去重
  }
  for (k in newObj) {
    //循环对象中的属性,属性名是不会有重复的
    newArr.push(Number(k));//属性名是字符串形式,要转换成数字
  }
  console.log(newArr);

6.利用set参数中的值是唯一的特点

  let arr = [10, 20, 30, 40, 30, 20, 10];
  let setArr = new Set(arr);
  let newArr = Array.from(setArr);
  console.log(newArr);

7、 与第六种方式相同 ,运用了扩展运算符

  const arr = [2, 3, 5, 7, 2, 3, 7, 9];
  console.log([...new Set(arr)]);

这些数组去重的方法,不同的方法会有不同的缺陷,比如不能去重复杂数据类型等,或者是字符串数字等等,还有待完善…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数组去重的set方法是一种使用ES6中的Set对象来实现的方法。Set对象是一种集合,它只能包含唯一的值,不允许重复。我们可以通过将数组转换为Set对象,然后再将Set对象转回数组的方式来实现数组去重。 具体步骤如下: 1. 创建一个新的Set对象,将原始数组作为参数传入。 2. 将Set对象转换为数组,得到去重后的数组。 以下是使用set方法实现数组去重的示例代码: ```javascript const arr = [1, 2, 3, 3, 4, 4, 5]; const uniqueArr = Array.from(new Set(arr)); console.log(uniqueArr); // [1, 2, 3, 4, 5] ``` 在这个示例代码中,我们首先创建了一个新的Set对象,并将原始数组arr作为参数传入。然后,我们使用Array.from方法将Set对象转换为数组,得到去重后的数组uniqueArr。最后,我们打印出去重后的数组uniqueArr。 使用Set对象的方式是一种简单且高效的方法来实现数组去重。它利用了Set对象的特性,自动去除了重复的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数组去重方法(Set对象)](https://blog.csdn.net/m0_56262444/article/details/116747048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [JavaScript数组去重方法总结【12种方法,号称史上最全】](https://download.csdn.net/download/weixin_38691055/13476291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [高性能js数组去重(12种方法,史上最全)](https://download.csdn.net/download/weixin_38687928/14807219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值