可以使用js的for循环筛选实现去掉数组中的重复的数据。
创新互联主要从事网站设计制作、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务利通,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
具体步骤如下:
需要准备的材料分别是:电脑、浏览器、ultraedit。
1、在ue编辑器中新建一个空白的html文件,js文件。
2、在ue编辑器中输入以下html代码。
3、在ue编辑器中输入以下js代码。
4、编辑完成以后,在ue编辑器中点击保存,格式选择UTF8无BOM。
5、在浏览器中打开此html文件,可以看到最终想要实现的去掉数组中的重复的数据效果。
数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下。
思路:
1.遍历数组,一一比较,比较到相同的就删除后面的
2.遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组
3.任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组。
4.遍历数组,取一个元素,作为对象的属性,判断属性是否存在
1.
删除后面重复的:
function
ov1(arr){
//var
a1=((new
Date).getTime())
for(var
i=0;iarr.length;i++)
for(var
j=i+1;jarr.length;j++)
if(arr[i]===arr[j]){arr.splice(j,1);j--;}
//console.info((new
Date).getTime()-a1)
return
arr.sort(function(a,b){return
a-b});
}
2.
这个是常规的方法,比较好理解,如果相同则跳出循环
function
ov2(a)
{
//var
a1=((new
Date).getTime())
var
b
=
[],
n
=
a.length,
i,
j;
for
(i
=
0;
i
n;
i++)
{
for
(j
=
i
+
1;
j
n;
j++)
if
(a[i]
===
a[j]){j=false;break;}
if(j)b.push(a[i]);
}
//console.info((new
Date).getTime()-a1)
return
b.sort(function(a,b){return
a-b});
}
3.
这个我花了好长时间明白的,这里j循环虽然继续了,但是i值已经改变了。就等于是一个新的i循环:
function
ov3(a)
{
//var
a1=((new
Date).getTime())
var
b
=
[],
n
=
a.length,
i,
j;
for
(i
=
0;
i
n;
i++)
{
for
(j
=
i
+
1;
j
n;
j++)
if
(a[i]
===
a[j])j=++i
b.push(a[i]);}
//console.info((new
Date).getTime()-a1)
return
b.sort(function(a,b){return
a-b});
}
4.
保证新数组中的都是唯一的
function
ov4(ar){
//var
a1=((new
Date).getTime())
var
m=[],f;
for(var
i=0;iar.length;i++){
f=true;
for(var
j=0;jm.length;j++)
if(ar[i]===m[j]){f=false;break;};
if(f)m.push(ar[i])}
//console.info((new
Date).getTime()-a1)
return
m.sort(function(a,b){return
a-b});
}
5.
用对象属性
function
ov5(ar){
//
var
a1=(new
Date).getTime()
var
m,n=[],o=
{};
for
(var
i=0;(m=
ar[i])!==undefined;i++)
if
(!o[m]){n.push(m);o[m]=true;}
//
console.info((new
Date).getTime()-a1)
return
n.sort(function(a,b){return
a-b});;
}
以上这篇JavaScript几种数组去掉重复值的方法推荐就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
JS判断一个数组中是否有重复值的三种方法
方法一:
//将数组转换成字符串,遍历数组,移除一个元素後若还能找到该元素,那么这个元素就是重复的
var s = ary.join(",")+",";
for(var i=0;iary.length;i++) {
if(s.replace(ary[i]+",","").indexOf(ary[i]+",")-1) {
alert("数组中有重复元素:" + ary[i]);
break;
}
}
方法二:
//对数组进行排序,查上一个和下一个是否相等
var ary = new Array("111","22","33","111");
var nary=ary.sort();
for(var i=0;iary.length;i++){
if (nary[i]==nary[i+1]){
alert("数组重复内容:"+nary[i]);
}
}
方法三:
//以数组值为键,持续向一个对象里面加值,
//如果在加值之前就发现这个属性在对象中已经存在,那么他就是重复的
function isRepeat(arr){
var hash = {};
for(var i in arr) {
if(hash[arr[i]])
return true;
hash[arr[i]] = true;
}
return false;
}
以上是简单类型数据数组的重复校验方法,若数组的元素为对象,处理方式就需要变化一下,取关键属性作为依据
avascript判断一个数组中是否有重复值的三种方法:
判断重复方法一,转为字符串 进行比较:
var ary = new Array("aaa","cc","dd","aaa");
var s = ary.join(",")+",";
for(var i=0;iary.length;i++) {
if(s.replace(ary[i]+",","").indexOf(ary[i]+",")-1) {
alert("数组中有重复元素:" + ary[i]);
break;
}
}
判断重复方法二,数组排序,再比较相邻的值:
var ary = new Array("bbb","cc","dd","bbb");
var nary=ary.sort();
for(var i=0;iary.length;i++){
if (nary[i]==nary[i+1]){
alert("数组重复内容为:"+nary[i]);
}
}
判断重复方法三,自定义函数方法判断重复:
function isRepeat(arr){
var hash = {};
for(var i in arr) {
if(hash[arr[i]])
return true;
hash[arr[i]] = true;
}
return false;
}