首页 web前端 js教程 js数组去重的方法汇总_javascript技巧

js数组去重的方法汇总_javascript技巧

May 16, 2016 pm 03:48 PM
数组去重

三种方法

利用indexOf判断新数组

underscore.js中实际上也是使用的类似的indexOf

 //传入数组
 function unique1(arr){
  var tmpArr = [];
  for(var i=0; i<arr.length; i++){
   //如果当前数组的第i已经保存进了临时数组,那么跳过,
   //否则把当前项push到临时数组里面
   if(tmpArr.indexOf(arr[i]) == -1){
    tmpArr.push(arr[i]);
   }
  }
  return tmpArr;
 }
登录后复制

利用indexOf判断旧数组

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

登录后复制

利用hash查找

这里利用了JS对象的实现就是hash表的特性

 function unique3(arr){
  var tmpArr = [], hash = {};//hash为hash表
  for(var i=0;i<arr.length;i++){
   if(!hash[arr[i]]){//如果hash表中没有当前项
    hash[arr[i]] = true;//存入hash表
    tmpArr.push(arr[i]);//存入临时数组
   }
  }
  return tmpArr;
 }
登录后复制

数组扩展

 Array.prototype.unique1 = function (){
  var tmpArr = []; 
  for (var i = 0; i < this.length; i++){
   if (tmpArr.indexOf(this[i]) == -1){
    tmpArr.push(this[i]);
   }
  }
  return tmpArr;
 }

 Array.prototype.unique2 = function(){
   var tmpArr = []; //结果数组
   for(var i = 0; i < this.length; i++){
    if (this.indexOf(this[i]) == i){
     tmpArr.push(this[i]);
    }
   }
   return tmpArr;
 }

 Array.prototype.unique3 = function(){
   var tmpArr=[], hash = {};
   for(var i = 0; i < this.length; i++){
    if (!hash[this[i]]){
      hash[this[i]] = true; 
      tmpArr.push(this[i]); 
    }
   }
   return tmpArr;
 }

登录后复制

使用Set

Set和Map是ES6中新增的数据结构
Set直接可以存储不重复的一组key,这个key也可以是对象,字符串等
创建set

var s = new Set([1, 2, 3,]);
s; // Set {1, 2, 3}

登录后复制

新增元素

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}//重复元素不会被添加

登录后复制

删除元素

s; // Set {1, 2, 3, 4}
s.delete(3);
s; // Set {1, 2, 4}

登录后复制

遍历元素

Map和Set无法使用下标
ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型

var s = new Set(['A', 'B', 'C']);

for (var x of s) { // 遍历Set
  alert(x);
}

登录后复制

或者直接使用iterable内置的forEach方法
forEach方法是ES5.1标准引入的

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, set) {
  alert(element);
});
登录后复制

以上所述就是本文的全部内容了,希望大家能够喜欢。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP 数组去重时指定去除重复元素的依据 PHP 数组去重时指定去除重复元素的依据 Apr 28, 2024 pm 10:48 PM

PHP的array_unique()函数用于去除数组中重复元素,其缺省使用严格相等(===)。我们可以通过自定比较函数来指定去重依据:创建自定比较函数,指定去重的标准(例如根据元素长度);将自定比较函数作为第三个参数传递给array_unique()函数,即可根据指定的标准去除重复元素。

es5和es6怎么实现数组去重 es5和es6怎么实现数组去重 Jan 16, 2023 pm 05:09 PM

es5中可以利用for语句和indexOf()函数来实现数组去重,语法“for(i=0;i

PHP 数组去重后如何保持键值对应? PHP 数组去重后如何保持键值对应? Apr 27, 2024 pm 12:33 PM

PHP数组去重后保持键值对应的方法有:使用array_unique()函数去除重复值,再用array_flip()函数交换键值对。将原始数组与去重后的数组合并,使用数组合并的方法来保留键值对应。

PHP 数组去重时处理空值和 null 值的技巧 PHP 数组去重时处理空值和 null 值的技巧 Apr 26, 2024 pm 05:03 PM

PHP数组去重时处理空值和null值的技巧:使用array_unique搭配array_filter过滤空值和null值。使用array_unique并定义自定义比较函数,将空值和null值视为相等。使用array_reduce遍历数组,并在不包含空值或null值的情况下添加项。

如何在 PHP 中根据特定键值对去除数组中的重复项? 如何在 PHP 中根据特定键值对去除数组中的重复项? Apr 28, 2024 pm 06:18 PM

在PHP中,使用array_unique()函数,根据特定键值对去除数组重复项。调用函数时传入数组作为参数,选择排序方式作为第二个参数。此函数返回一个新数组,其中重复项已根据指定的键值对被移除。

PHP中如何排除重复数组 PHP中如何排除重复数组 Jun 05, 2023 pm 02:53 PM

PHP中排除重复数组的方法:1、创建一个PHP示例文件;2、定义待去重的数组为“$oldArr”,去重后的新数组为“$newArr”;3、使用“array_unique()”函数去除数组中重复元素,并返回去重后的数组,其代码为“$newArr = array_unique($oldArr);”即可排除;4、还可以通过for循环的方式进行去重。

javascript数组去重怎么做 javascript数组去重怎么做 Sep 07, 2021 pm 05:59 PM

方法:1、利用“[...new Set(arr)]”语句;2、利用“Array.from(new Set(arr))”语句;3、利用filter和indexOf函数;4、利用双重for循环,检查值是否重复,如果有重复就使用push()删除。

php如何去掉数组内重复元素 php如何去掉数组内重复元素 May 25, 2023 pm 05:19 PM

php去掉数组内重复元素的方法:1、使用“array_unique()”函数,去除数组中的重复数据;2、通过foreach循环遍历,通过定义一个新的数组存储不重复的数据的方法实现去重;3、使用array_flip()和array_keys()函数,可得到去重后的数组;4、使用array_filter()函数,通过使用该函数结合匿名函数的方式对原始数组进行去重。

See all articles