Js数组去重的多种方法

简介: 学习过程中将笔记整理跟大家分享,希望对大家也有所帮助,共同成长进步💪~如果大家喜欢,可以点赞或留言💕~~~~,谢谢大家⭐️⭐️⭐️~~~
学习过程中将笔记整理跟大家分享,希望对大家也有所帮助,共同成长进步💪~\
如果大家喜欢,可以点赞或留言💕 ~~,谢谢大家⭐️⭐️⭐️~

文章首发于https://juejin.cn/post/7103362671730229284

1.push + indexOf

语法:string.indexOf(searchvalue,start)
参数
1653560771(1).png
定义用法:indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。

代码如下:

var arr = [1,2,3,4,5,6,6,6];
function newArr(array){
    //创建一个新数组,利用indexOf去重
    var newArr = [];
    for(var i = 0; i < array.length; i++){
        //如果临时数组里没有当前数组的当前值,则把当前值push到新数组里面
        if(newArr.indexOf(array[i]) == -1){
            newArr.push(array[i]);
        }
    }
    return newArr;
}
console.log(newArr(arr))

2.filter + indexOf

filter 过滤 配合 indexOf 查找元素
注意:

  • filter() 方法用于把Array中的某些元素过滤掉,然后返回剩下的未被过滤掉的元素
  • filter() 不会对空数组进行检测;
  • filter() 不会改变原始数组。

详细filter方法讲解可以去查阅其他人写的文章讲解的很详细

var arr = [1,2,3,4,5,6,6,6];
function newArr(array){
    return array.filter((item, index) => { 
        return array.indexOf(item) === index;
    }) 
}
console.log(newArr(arr))

3.object

利用对象属性名不能重复这一特点。如果对象中不存在,就可以给 push 进去,代码如下:

var arr = [1,2,3,4,5,6,6,6];
function newArr(array){
    let newArr = [];
    let obj = {};
    for(let i = 0;i<array.length;i++){
        if (!obj[array[i]]) {
              newArr.push(array[i]);
              obj[array[i]] = 1;
        } else {
              obj[array[i]] ++;
        }
    };
  return newArr;
}
console.log(newArr(arr))

4.splice

利用 splice 进行切割,代码如下:

var arr = [1,1,2,9,6,9,6,3,1,4,5];
function newArr(arr){
    for(let i = 0; i<arr.length; i++){
        for(let j = i + 1; j<arr.length; j++){
          if (arr[i] === arr[j]) {
            arr.splice(j,1);
            j--
          }
        };
    }
    return arr;
}
console.log(newArr(arr))

5.ES6中利用Set去重

此方法是所有去重方法中代码最少的方法,代码如下:

var arr = [1,1,2,9,6,9,6,3,1,4,5];
function newArr(arr){
    //方法一  Array.from()解析类数组为数组
    return Array.from(new Set(arr));
    //方法二  es6的...解构
    return [...new Set(arr) ];
}
console.log(newArr(arr))
//再说一个字符串去重
let str = "112223453";
let newstr = [...new Set(str)].join("");     // 12345
谢谢大家阅读⭐️⭐️⭐️,如果喜欢,可以点赞或留言哟💕
目录
相关文章
|
14天前
|
存储 JavaScript 对象存储
js检测数据类型有那些方法
js检测数据类型有那些方法
130 59
|
14天前
|
JavaScript
js数组去重
js数组去重
97 55
|
9天前
|
JavaScript 前端开发 API
javaScript中常用的String方法以及注意点总结
本文总结了JavaScript中常用的String对象的方法及其注意事项,包括大小写转换、字符获取、子字符串截取、字符串拼接、去除空格、替换、分割以及查找字符串中字符的索引等操作。提供了每种方法的使用示例代码,帮助理解它们的具体用法和差异。
22 2
|
9天前
|
JavaScript 前端开发
JS之concat方法
本文介绍了JavaScript中`concat`方法的使用,展示了如何利用该方法来合并数组,包括与字符串、数字、对象等类型的拼接,以及使用扩展运算符进行合并的示例。
10 0
JS之concat方法
|
14天前
|
JavaScript 前端开发
JavaScript 中的新 Set 方法
JavaScript 中的新 Set 方法
|
15天前
|
JavaScript
JS数组合并的常用方法
JS数组合并的常用方法
|
4天前
|
JavaScript 前端开发
JavaScript遍历数组用splice方法删除元素,这样写可能有遗漏,你遇到过吗?
JavaScript遍历数组用splice方法删除元素,这样写可能有遗漏,你遇到过吗?
|
4天前
|
JavaScript 前端开发
JavaScript从二维数组抽取元素组成新数组的三种方法
JavaScript从二维数组抽取元素组成新数组的三种方法
|
4天前
|
JavaScript 前端开发
用Javascript对二维数组DIY按汉语拼音的排序方法
用Javascript对二维数组DIY按汉语拼音的排序方法
|
6天前
|
JSON JavaScript 前端开发
6-19|Python数据传到JS的方法
6-19|Python数据传到JS的方法