1、方法一:双层循环,外层循环元素,内层循环做比较,若相同则跳过,不同则加入结果集中,获取没重复的最右侧的值放入数组中

Array.prototype.distinct = function(){
  var arr = this;
  var result = [];
  var len = arr.length;
  for(var i=0;i<len;i++){
    for(var j=i+1;j<len;j++){
      if(arr[i]===arr[j]){
        j = ++i;//出现相同的值,将j置为++i,即进入新一轮的循环
      }
    }
    result.push(arr[i])
  }
  return result;
}

2、方法二:利用splice直接在原数组中删除

Array.prototype.distinct = function(){
var arr = this,
len = arr.length;
for(var i=0;i<len;i++){
for(var j = i+1; j<len;j++){
if(arr[i]===arr[j]){
arr.splice(i,1);
len--;
j--;
}
}
}
return arr;
}

3、方法三:利用对象属性不能重复的特点去重

Array.prototype.distinct = function(){
var arr = this;
var len = arr.length;
var obj = {}
var result = []
for(var i =0 ;i<len;i++){
//if(!obj[arr[i]]){
if(!obj.hasOwnProperty(arr[i])){
obj[arr[i]] = 1;
result.push(arr[i])
}
}
return result
}

4、方法四:利用数组进行排序

Array.prototype.distinct = function(){
var arr = this;
var len = arr.length;
arr.sort(function(a,b){
return a-b;
})
function loop(index){
if(index>=1){
if(arr[index] === arr[index-1]){
arr.splice(index,1)
}
loop(index-1)
}
}
loop(len-1)
return arr;
}

5、方法五:遍历数组,利用indexOf判断

Array.prototype.distinct = function(){
var arr = this;
var len = arr.length;
var result = [];
arr.forEach(function(currentVal,index,arr){
//arr.map(function(currentVal,index,arr){
var loop = result.indexOf(currentVal)
if(loop === -1){
result.push(currentVal)
}
})
return result
}

6、方法六:es6的set数据结构,set成员都是唯一的,Array.form可以将set类型转化为数组

Array.prototype.distinct = function(){
return Array.from(new Set(this)) //或者使用es6的三点运算符转化为数组 [...new Set(this)]
}

javascript中的数组去重的更多相关文章

  1. Javascript中的数组去重-indexof方法

    在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1 ...

  2. JavaScript中对象数组去重方法

    在一次对后端返回的对象数组的操作时想通过indexOf()或者includes()的方法来实现对对象数组的去重但是行不通,因为用indexOf()返回的都是-1,一下记录两种对象数组(更具指定属性)去 ...

  3. 【跟着大佬学JavaScript】之数组去重(结果对比)

    前言 数组去重在面试和工作中都是比较容易见到的问题. 这篇文章主要是来测试多个方法,对下面这个数组的去重结果进行分析讨论.如果有不对的地方,还请大家指出. const arr = [ 1, 1, &q ...

  4. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  5. Javascript中判断数组的正确姿势

    在 Javascript 中,如何判断一个变量是否是数组? 最好的方式是用 ES5 提供的 Array.isArray() 方法(毕竟原生的才是最屌的): var a = [0, 1, 2]; con ...

  6. javascript中的数组扩展(一)

     javascript中的数组扩展(一) 随着学习的深入,发现需要学习的关于数组的内容也越来越多,后面将会慢慢归纳,有的是对前面的强化,有些则是关于前面的补充. 一.数组的本质    数组是按照次序排 ...

  7. JavaScript中的数组详解

    JavaScript中的数组 一.数组的定义 数组是值的有序集合,或者说数组都是数据的有序列表. 二.创建数组 [字面量形式] 1.空数组 var arr=[]; 2.带有元素的数组 var arr= ...

  8. JavaScript中对数组的操作

    原文:JavaScript中对数组的操作 一:数组的使用 1.定义:JavaScript中对数组的定义有两种形式.如: .var arr = [12,3,5,8]; .var arr = new Ar ...

  9. JavaScript中对数组和数组API的认识

    JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...

随机推荐

  1. xstream 解析xml报文

    一.xml一种格式的数据转换为对象 pom.xml引入 <!--javaBean和XML的双向转换--> <dependency> <groupId>com.tho ...

  2. Struts2 应知应会

    struts.xml 文件的 action 的配置: Struts2 中结果类型的配置来自于下面: 其中: dispatcher:转发技术,转发到一个 jsp 视图 redirect:重定向到一个 j ...

  3. jQuery高度及位置操作

    1. 获取滑轮位置,scrolltop:上下滚动的意思. <!DOCTYPE html> <html lang="en"> <head> < ...

  4. 【BZOJ4540】【HNOI2016】序列(莫队)

    [BZOJ4540][HNOI2016]序列(莫队) 题面 BZOJ 洛谷 Description 给定长度为n的序列:a1,a2,-,an,记为a[1:n].类似地,a[l:r](1≤l≤r≤N)是 ...

  5. CAS单点登录详细流程

    一.CAS简介和整体流程 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目.CAS ...

  6. 【poj2068】Nim

    Portal -->poj2068 Description ​  给你\(S\)个石子,有\(2n\)个人分成两队,编号为奇数的一队,编号为偶数的一队,\(2n\)个人按照编号从小到大的顺序拿石 ...

  7. Work at DP

    转载请注明出处:http://www.cnblogs.com/TSHugh/p/8858805.html Prepared: (无notes的波兰题目的notes见我的波兰题目补全计划)BZOJ #3 ...

  8. 框架----Django之Form提交验证(二)

    一.Form提交验证之(学生表.老师表.班级表)的添加和编辑实现案例 1. 浏览器访问 http://127.0.0.1:8000/student_list/ http://127.0.0.1:800 ...

  9. Land of Farms HDU - 5556 二分图匹配

    Farmer John and his brothers have found a new land. They are so excited and decide to build new farm ...

  10. gdb常用命令小结

    用了这么长时间gdb, 总结下常用用法: http://note.youdao.com/noteshare?id=4a2d1a34624f7197d8e2304c4beb4578