删除重复数据
程序员文章站
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集合排重
黑色背景 |
小结
想实现一个功能不难,难的是还要结合业务场景。
感谢您的阅读~~