js数组去重的多种算法完毕

2019-06-01 19:24 来源:未知

在线去除重复项工具:

JavaScript落到实处删除数组重复成分的多种常用高效算法计算,javascript数组

正文实例讲述了JavaScript完毕删除数组重复成分的多样常用高效算法。分享给大家供我们仿效,具体如下:

此地就 js 怎样落到实处数组去重整理出伍种办法,并附着演示德姆o 以及 源码。

一.遍历数组法

最简便的去重方法,

福寿年高思路:新建一新数组,遍历传入数组,值不在新数组就加盟该新数组中;注意点:判断值是或不是在数组的艺术“indexOf”是ECMAScript5方法,IE八以下不援助,需多写一些一双两很低版本浏览器代码,源码如下:

// 最简单数组去重法
function unique1(array){
 var n = []; //一个新的临时数组
 //遍历当前数组
 for(var i = 0; i < array.length; i  ){
  //如果当前数组的第i已经保存进了临时数组,那么跳过,
  //否则把当前项push到临时数组里面
  if (n.indexOf(array[i]) == -1) n.push(array[i]);
 }
 return n;
}
// 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持
if (!Array.prototype.indexOf){
 // 新增indexOf方法
 Array.prototype.indexOf = function(item){
  var result = -1, a_item = null;
  if (this.length == 0){
   return result;
  }
  for(var i = 0, len = this.length; i < len; i  ){
   a_item = this[i];
   if (a_item === item){
    result = i;
    break;
   } 
  }
  return result;
 }
}

二.对象键值对法

该方法实行的快慢比别的任何格局都快, 就是占用的内部存储器大学一年级些;

贯彻思路:新建一js目的以及新数组,遍历传入数组时,剖断值是不是为js对象的键,不是的话给指标新扩张该键并放入新数组。注意点: 推断是不是为js对象键时,会自动对传播的键推行“toString()”,差别的键恐怕会被误以为一样;举个例子: a[1]、a["1"] 。化解上述难题大概得调用“indexOf”。

// 速度最快, 占空间最多(空间换时间)
function unique2(array){
 var n = {}, r = [], len = array.length, val, type;
  for (var i = 0; i < array.length; i  ) {
    val = array[i];
    type = typeof val;
    if (!n[val]) {
      n[val] = [type];
      r.push(val);
    } else if (n[val].indexOf(type) < 0) {
      n[val].push(type);
      r.push(val);
    }
  }
  return r;
}

三.数组下标推断法

依旧得调用“indexOf”性能跟艺术1大约,

贯彻思路:假若当前数组的第i项在脚下数组中第3回面世的地方不是i,那么表示第i项是重新的,忽略掉。否则存入结果数组。

function unique3(array){
 var n = [array[0]]; //结果数组
 //从第二项开始遍历
 for(var i = 1; i < array.length; i  ) {
  //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
  //那么表示第i项是重复的,忽略掉。否则存入结果数组
  if (array.indexOf(array[i]) == i) n.push(array[i]);
 }
 return n;
}

四.排序后相邻去除法

就算原生数组的”sort”方法排序结果不怎么可信,但在不重申顺序的去重里该缺点毫无影响。

贯彻思路:给传入数组排序,排序后同样值相邻,然后遍历时新数组只进入不与前壹值重复的值。

// 将相同的值相邻,然后遍历去除重复值
function unique4(array){
 array.sort(); 
 var re=[array[0]];
 for(var i = 1; i < array.length; i  ){
  if( array[i] !== re[re.length-1])
  {
   re.push(array[i]);
  }
 }
 return re;
}

5.优化遍历数组法

根源海外博文,该办法的兑今世码卓殊炫耀;

落到实处思路:获取没重复的最右壹值放入新数组。(检测到有重复值时停下当前巡回同临时候进入顶层循环的下1轮判别)

// 思路:获取没重复的最右一值放入新数组
function unique5(array){
 var r = [];
 for(var i = 0, l = array.length; i < l; i  ) {
  for(var j = i   1; j < l; j  )
   if (array[i] === array[j]) j =   i;
  r.push(array[i]);
 }
 return r;
}

github花色源码:

PS:这里再为我们提供三款去重新工具供大家参照他事他说加以考察使用:

在线去除重复项工具:

在线文本去重新工具:

越来越多关于JavaScript相关内容感兴趣的读者可查阅本站专项论题:《JavaScript数组操作本事总括》、《JavaScript排序算法计算》、《JavaScript数学运算用法总计》、《JavaScript数据结构与算法技艺总计》、《JavaScript遍历算法与才能总计》、《JavaScript查找算法工夫总括》及《JavaScript错误与调度技术总计》

梦想本文所述对大家JavaScript程序设计有着帮忙。

本文实例讲述了JavaScript完结删除数组重复元素的伍种常用高效算法。分...

二.目的键值对法
该方法试行的进程比任何任何方法都快, 正是占领的内部存款和储蓄器大学一年级些,落到实处思路:新建1js对象以及新数组,遍历传入数组时,推断值是还是不是为js对象的键,不是的话给目的新扩大该键并放入新数组。注意 点: 决断是不是为js对象键时,会活动对传播的键实行“toString()”,分歧的键或然会被误感到同样;举例: a[1]、a["1"] 。化解上述难点依旧得调用“indexOf”。

落到实处思路:假诺当前数组的第i项在当下数组中率先次面世的义务不是i,那么表示第i项是重复的,忽略掉。不然存入结果数组。

if (!Array.prototype.indexOf){ 
// 新增indexOf方法 
Array.prototype.indexOf = function(item){ 
var result = -1, a_item = null; 
if (this.length == 0){ 
return result; 
} 
for(var i = 0, len = this.length; i < len; i  ){ 
a_item = this[i]; 
if (a_item === item){ 
result = i; 
break; 
} 
} 
return result; 
} 
} 

最简单易行的去重方法,

// 将相同的值相邻,然后遍历去除重复值 
function unique4(array){ 
array.sort(); 
var re=[array[0]]; 
for(var i = 1; i < array.length; i  ){ 
if( array[i] !== re[re.length-1]){ 
  re.push(array[i]); 
 } 
 } 
 return re; 
} 
// 思路:获取没重复的最右一值放入新数组
function unique5(array){
 var r = [];
 for(var i = 0, l = array.length; i < l; i  ) {
  for(var j = i   1; j < l; j  )
   if (array[i] === array[j]) j =   i;
  r.push(array[i]);
 }
 return r;
}

四.排序后相邻去除法
固然原生数组的”sort”方法排序结果不怎么可信赖,但在不另眼对待顺序的去重里该缺点毫无影响。完成思路:给传入数组排序,排序后一样值相邻,然后遍历时新数组只参预不与前一值重复的值。

该方法实践的快慢比别的任何格局都快, 正是占用的内部存款和储蓄器大学一年级些;

// 最简单数组去重法 
function unique1(array){ 
var n = []; //一个新的临时数组 
//遍历当前数组 
for(var i = 0; i < array.length; i  ){ 
//如果当前数组的第i已经保存进了临时数组,那么跳过, 
//否则把当前项push到临时数组里面 
if (n.indexOf(array[i]) == -1) n.push(array[i]); 
} 
return n; 
} 

兑现思路:新建1新数组,遍历传入数组,值不在新数组就参与该新数组中;注意点:决断值是还是不是在数组的章程“indexOf”是ECMAScript5方法,IE捌以下不帮衬,需多写一些一双两异常的低版本浏览器代码,源码如下:

3.数组下标决断法
大概得调用“indexOf”品质跟艺术一大约,贯彻思路:借使当前数组的第i项在现阶段数组中首先次面世的职务不是i,那么表示第i项是重新的,忽略掉。不然存入结果数组。

兑现思路:获取没重复的最右一值放入新数组。(检查实验到有重复值时停下当前循环同不平日间跻身顶层循环的下1轮推断)

// 速度最快, 占空间最多(空间换时间) 
function unique2(array){ 
var n = {}, r = [], len = array.length, val, type; 
for (var i = 0; i < array.length; i  ) { 
val = array[i]; 
type = typeof val; 
if (!n[val]) { 
n[val] = [type]; 
r.push(val); 
} else if (n[val].indexOf(type) < 0) { 
n[val].push(type); 
r.push(val); 
} 
} 
return r; 
} 

正文实例讲述了JavaScript完成删除数组重复成分的5种常用高效算法。分享给大家供大家参谋,具体如下:

一.遍历数组法
韦德娱乐1946网页版,最轻便易行的去重方法,落实思路:新建一新数组,遍历传入数组,值不在新数组就投入该新数组中;注意点:判别值是还是不是在数组的主意“indexOf”是ECMAScript5方法,IE八以下不帮衬,需多写一些合作低版本浏览器代码,源码如下:

源自国外博文,该措施的贯彻代码特别炫耀;

剖断浏览器是不是援助indexOf ,indexOf 为ecmaScript伍新办法 IE八以下(包括IE八, IE7头接济部分ecma5)不帮助

落到实处思路:新建壹js指标以及新数组,遍历传入数组时,剖断值是不是为js对象的键,不是的话给指标新增加该键并放入新数组。注意点: 决断是还是不是为js对象键时,会自行对传播的键施行“toString()”,不一样的键可能会被误感觉一样;举个例子: a[1]、a["1"] 。化解上述难点要么得调用“indexOf”。

function unique3(array){ 
var n = [array[0]]; //结果数组 
//从第二项开始遍历 
for(var i = 1; i < array.length; i  ) { 
//如果当前数组的第i项在当前数组中第一次出现的位置不是i, 
//那么表示第i项是重复的,忽略掉。否则存入结果数组 
if (array.indexOf(array[i]) == i) n.push(array[i]); 
} 
return n; 
} 

4.排序后相邻去除法

如上正是为大家提供的伍种JS数组去重的算法完成,希望对大家的读书抱有扶助。  

// 最简单数组去重法
function unique1(array){
 var n = []; //一个新的临时数组
 //遍历当前数组
 for(var i = 0; i < array.length; i  ){
  //如果当前数组的第i已经保存进了临时数组,那么跳过,
  //否则把当前项push到临时数组里面
  if (n.indexOf(array[i]) == -1) n.push(array[i]);
 }
 return n;
}
// 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持
if (!Array.prototype.indexOf){
 // 新增indexOf方法
 Array.prototype.indexOf = function(item){
  var result = -1, a_item = null;
  if (this.length == 0){
   return result;
  }
  for(var i = 0, len = this.length; i < len; i  ){
   a_item = this[i];
   if (a_item === item){
    result = i;
    break;
   } 
  }
  return result;
 }
}

您恐怕感兴趣的稿子:

  • JS实现的数组全排列输出算法
  • JS实现数组按升序及降序排列的秘技
  • JavaScript数组自由排列完成自由洗牌功效
  • JavaScript兑现数字数组正序排列的格局
  • JavaScript实现在数组中搜索差别顺序排列的字符串
  • js数组去重的三种常用方法总括
  • js取多个数组的混合|差集|并集|补集|去重示例代码
  • js算法中的排序、数组去重详细概述
  • js数组去重的hash方法
  • javascript数组去三巳种办法的性质测试与相比较
  • JS获取数组最大值、最小值及长度的措施
  • JavaScript落到实处数组全排列、去重及求最大值算法示例

您大概感兴趣的篇章:

  • JavaScript去掉数组中的重复成分
  • js过滤数组重复成分的措施
  • javascript删除数组重复成分的不二秘籍汇总
  • JavaScript移除数组内重复元素的法子
  • Javascript 去除数组的再度成分
  • JS查找数组中重复成分的章程详解
  • JS 清除字符串数组中,重复成分的实现格局
  • js 高效去除数组重复成分示例代码
  • javascript中去除数组重复元素的兑现形式【实例】
  • js 管理数组重复成分示例代码
  • javascript过滤数组重复元素的贯彻方式
  • JavaScript 数组去重并总结重复成分出现的次数实例
// 思路:获取没重复的最右一值放入新数组 
function unique5(array){ 
var r = []; 
for(var i = 0, l = array.length; i < l; i  ) { 
 for(var j = i   1; j < l; j  ) 
  if (array[i] === array[j]) j =   i; 
 r.push(array[i]); 
 } 
 return r; 
} 

二.指标键值对法

5.优化遍历数组法
该情势的落到实处代码非常绚烂,落到实处思路:获取没重复的最右一值放入新数组。(检查评定到有重复值时停下当前循环同期进入顶层循环的下壹轮判别)推荐

1.遍历数组法

function unique3(array){
 var n = [array[0]]; //结果数组
 //从第二项开始遍历
 for(var i = 1; i < array.length; i  ) {
  //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
  //那么表示第i项是重复的,忽略掉。否则存入结果数组
  if (array.indexOf(array[i]) == i) n.push(array[i]);
 }
 return n;
}

5.优化遍历数组法

PS:这里再为大家提供五款去重新工具供我们参谋使用:

// 将相同的值相邻,然后遍历去除重复值
function unique4(array){
 array.sort(); 
 var re=[array[0]];
 for(var i = 1; i < array.length; i  ){
  if( array[i] !== re[re.length-1])
  {
   re.push(array[i]);
  }
 }
 return re;
}

梦想本文所述对大家JavaScript程序设计有着支持。

越来越多关于JavaScript相关内容感兴趣的读者可查看本站专项论题:《JavaScript数组操作技巧总括》、《JavaScript排序算法总计》、《JavaScript数学生运动算用法计算》、《JavaScript数据结构与算法手艺计算》、《JavaScript遍历算法与技能计算》、《JavaScript查找算法本事总括》及《JavaScript错误与调治能力总计》

仍然得调用“indexOf”质量跟艺术1大致,

得以实现思路:给传入数组排序,排序后同样值相邻,然后遍历时新数组只进入不与前壹值重复的值。

这里就 js 怎样落成数组去重整理出八种办法,并附上演示德姆o 以及 源码。

// 速度最快, 占空间最多(空间换时间)
function unique2(array){
 var n = {}, r = [], len = array.length, val, type;
  for (var i = 0; i < array.length; i  ) {
    val = array[i];
    type = typeof val;
    if (!n[val]) {
      n[val] = [type];
      r.push(val);
    } else if (n[val].indexOf(type) < 0) {
      n[val].push(type);
      r.push(val);
    }
  }
  return r;
}

github项目源码:

就算原生数组的”sort”方法排序结果不怎么可信,但在不讲究顺序的去重里该缺点毫无影响。

在线文本去重新工具:

3.数组下标判定法

TAG标签: 韦德娱乐1946
版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于韦德娱乐1946网页版,转载请注明出处:js数组去重的多种算法完毕