欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

删除重复数据

程序员文章站 2022-03-06 21:26:04
...

叙述

不管是在数组中,还是在list的集合中,都可能会出现重复的数据。如果排除重复项就是我们应该考虑的事情了。

往一个空数组中添加数据

往一个集合中循环push数据,再往该集合push数据之前,先进行比较,如果该值和集合中的每一项数据不相同再进行push。
删除重复数据

删除数组中重复元素

首先定义如下数组:
var arr=[0,2,3,5,6,9,2];
我们可以看到数组中存在重复元素’2’;
最后通过jquery筛选应该得到[0,2,3,5,6,9];

首先我们再定义一个空数组,用来存放最后筛选出来的元素:
var new_arr=[];
利用jquery的$.inArray可以轻松实现:
遍历数组元素:

for(var i=0;i<arr.length;i++) {
  var items=arr[i];
  //判断元素是否存在于new_arr中,如果不存在则插入到new_arr的最后
  if($.inArray(items,new_arr)==-1) {
    new_arr.push(items);
  }
}

当遍历到最后一个’2’的时候,因为已经将之前一个’2’插入到了new_arr中,所以最后一个’2’不会执行if中的语句

最后得到新数组new_arr=[0,2,3,5,6,9];

备注:$.inarray(value,array) –确定第一个参数在数组中的位置(如果没有找到则返回 -1 )。

最终代码如下:

var arr=[0,2,3,5,6,9,2];
var new_arr=[];
for(var i=0;i<arr.length;i++) {
  var items=arr[i];
  //判断元素是否存在于new_arr中,如果不存在则插入到new_arr的最后
  if($.inArray(items,new_arr)==-1) {
    new_arr.push(items);
  }
}
console.log(new_arr); //[0,2,3,5,6,9]

Filter

filter是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。

和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。

利用filter,可以巧妙地去除Array的重复元素:

'use strict';
var
  r,
  arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
  r = arr.filter(function (element, index, self) {
  return self.indexOf(element) === index;
});

因为Array中的indexOf总是返回第一次出现某一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。


list集合排重

去除list集合中重复项的几种方法

黑色背景

小结

想实现一个功能不难,难的是还要结合业务场景。
感谢您的阅读~~