资讯专栏INFORMATION COLUMN

数组 去除重复项的方法 你知道几种呢?

tomato / 2609人阅读

摘要:数组去重的方法第一种方法方法可以将结构转为数组这就是提供了一种数据去重的方法第二种方法运用扩展运算符提供了一种更便捷的去重方法第三种方法这是一种原生的去重方法,借助一个空数组来实现去重,便于理解底层原理函数带有参数第四种方法同上函数不带参

数组去重的方法

第一种方法

Array.from方法可以将Set结构转为数组

let items = new Set([1, 2, 3, 4, 5]);
let array = Array.from(items);

这就是提供了一种数据去重的方法

function uniq(array) {
  return Array.from(new Set(array));
}
uniq([1, 2, 3, 3])  //[1, 2, 3]

第二种方法

运用扩展运算符(...)提供了一种更便捷的去重方法

let arr = [2, 3, 3, 5, 6, 2];
let uniq = [...new Set(arr)];
//[2, 3, 5, 6]

第三种方法

这是一种原生JS的去重方法,借助一个空数组来实现去重,便于理解底层原理(xyz函数带有参数)

function xyz(arr) {
  let a= [];
  arr.forEach((item,index) => {
    a.indexOf(item) ===-1 ? a.push(item) : ""
  })
  return a;
}
console.log(xyz([1,2,3,2,3]));
//[1, 2, 3]

第四种方法

同上(xyz函数不带参数)
拓展:需要注意的一点就是此函数可以传多个数组,但是要看arguments[index]
决定执行哪个数组,默认是执行第一个。

function xyz() {
  let a= [];
//  Array.from(arguments[0]).forEach((item,index) => {
//    a.indexOf(item) ===-1 ? a.push(item) : ""
// })
//  Array.prototype  可以换成[]
Array.prototype.forEach.call(arguments[1], (item,index) => {
   a.indexOf(item) ===-1 ? a.push(item) : ""
})
  return a;
}
console.log(xyz([1,2,3,2,3],[2,2,1]));
//[1, 2, 3]

第五种方法

这是一种基于数组原型链的去重方法

Array.prototype.uniq = function() {
  let a= [];
    this.forEach((item,index) => {
      a.indexOf(item) ===-1 ? a.push(item) : ""
    })
    return a;
}

console.log([1,2,1,3].uniq());
//[1, 2, 3]

这么多方法你知道哪几种呢?

如需转载请注明转载处:牧码人keephhh
https://www.keephhh.com/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82937.html

相关文章

  • 20170605-String相关方法

    摘要:首先来看一个例子我们知道基本数据类型有还有一种复杂数据类型基本类型不是对象从逻辑上讲是不应该有方法的其实为了让我们能够对进行相关操作后台已经自动完成了一系列的处理当第二行代码访问时访问过程处于一种读取模式也就是从内存中读取这个字符串的值而在 首先来看一个例子 var s1 = some text; var s2 = s1.substring(2); var s3 = new Strin...

    rollback 评论0 收藏0
  • 准备下次编程面试前应该知道的数据结构

    摘要:以下内容编译自他的这篇准备下次编程面试前你应该知道的数据结构瑞典计算机科学家在年写了一本书,叫作算法数据结构程序。 国外 IT 教育学院 Educative.io 创始人 Fahim ul Haq 写过一篇过万赞的文章《The top data structures you should know for your next coding interview》,总结了程序员面试中需要掌...

    desdik 评论0 收藏0
  • 准备下次编程面试前应该知道的数据结构

    摘要:以下内容编译自他的这篇准备下次编程面试前你应该知道的数据结构瑞典计算机科学家在年写了一本书,叫作算法数据结构程序。 国外 IT 教育学院 Educative.io 创始人 Fahim ul Haq 写过一篇过万赞的文章《The top data structures you should know for your next coding interview》,总结了程序员面试中需要掌...

    chadLi 评论0 收藏0
  • 数组操作(去重,深复制...)

    摘要:否则存入结果数组给本地对象增加一个原型方法,它用于删除数组条目中重复的条目可能有多个,返回值是一个包含被删除的重复条目的新数组下面求中最大值正确的是为对象添加一个去除重复项的方法,得到去重后的数组 深度克隆 function clone(Obj) { var buf; if (Obj instanceof Array) { var buf = [];//...

    klivitamJ 评论0 收藏0
  • 前端面试每日3+1(周汇总2019.08.11)

    摘要:前端面试每日题,以面试题来驱动学习,每天进步一点让努力成为一种习惯,让奋斗成为一种享受相信坚持的力量项目地址推荐欢迎跟一起折腾前端,系统整理前端知识,目前正在折腾,打算打通算法与数据结构的任督二脉。 《论语》,曾子曰:吾日三省吾身(我每天多次反省自己)。 前端面试每日3+1题,以面试题来驱动学习,每天进步一点! 让努力成为一种习惯,让奋斗成为一种享受!相信 坚持 的力量!!! 项目...

    Baoyuan 评论0 收藏0

发表评论

0条评论

tomato

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<