• 全部
  • 问答

js数组中如果有重复的值,怎么把重复的删掉????

szjq 2006-11-16 05:26:33
比如说:
var arr = ["abc","def","efff","vvv","abc"];
要处理成:
var arr = ["abc","def","efff","vvv"];

如何处理????
...全文
836 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
szjq 2006-11-16
谢谢大家
回复
btbtd 2006-11-16
啰嗦一下, 我看这里好多人缺少通用,兼容,效率的概念,...
回复
btbtd 2006-11-16
嘻嘻, 看我的无敌函数...

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[
var str='1:2,1:3,1:4,1:5,2:3,2:4,3:5,1:2,1:4,2:3,1:2,1:3,1:2,1:3,1:4';
var str=str.split(',');

var str1=['中国','国度','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','中国','中国','中国','国度','国度','北京','广东','国度','广东']

//var str2=[中国,国度,广东,北京]
var str2=['北京', '国度', '中国', '广东']

var ar=[65,172,47,117,5,75,6,151,180,153,188,197,125,197,66,90,150,19,101,198,141,176,47,146,51,172,47,117,5,75,6,151,180,153,188,197,125,197,66,90,150,19,101,198,141,176,47,146,51];

document.write(fDelRddcAr(str),'<br/>');
document.write(fDelRddcAr(str,1),'<br/>');
document.write(fDelRddcAr(str,2),'<p/>');

document.write(fDelRddcAr(str1),'<br/>');
document.write(fDelRddcAr(str1,1),'<br/>');
document.write(fDelRddcAr(str1,2),'<p/>');

document.write(fDelRddcAr(str2),'<br/>');
document.write(fDelRddcAr(str2,1),'<br/>');
document.write(fDelRddcAr(str2,2),'<p/>');

document.write(fDelRddcAr(ar),'<br/>');
document.write(fDelRddcAr(ar,3),'<br/>');
document.write(fDelRddcAr(ar,4),'<p/>');

/*----------------------------------------*\
* javascript 删除数组冗余数据 函数 By shawl.qiu
* 参数说明:
* array: 数组对象, 要排序的数组.
* pram 数值型, 是否返回排序好的数组, 参数设置如下:
* 1. 字串正序排序 2: 字串反向排序; 3: 数字正向排序; 4: 数字反向排序; 其他: 正则排序
\*----------------------------------------*/
//--------------------begin function fDelRddcAr (array, pram)--------------//
function fDelRddcAr(array, pram){
var temp = '';
var mark='$$$###';
array=array.join(mark);
var re=new RegExp('.*?'+mark.replace(/(.)/g,'\\$1')+'|.*?$','g');
var re_=new RegExp(mark.replace(/(.)/g,'\\$1')+'$');

array.replace(re,function(){
if(temp.indexOf(arguments[0]) == -1) temp += arguments[0]; } );
array=temp.replace(re_,'').split(mark);

if(!pram)return array;
return fArOdr(array, pram);
function fArOdr(array, pram){
if(!pram)var pram=1;
switch(pram){
case 2: return array.reverse();
case 3: return array.sort(function(a,b){return a-b;});
case 4: return array.sort(function(a,b){return b-a;});
default: return array.sort();
}
}
} // shawl.qiu code
//--------------------end function fDelRddcAr (array, pram)----------------//
//]]>
</script>
回复
Apq001 2006-11-16
我发的没问题。
回复
szjq 2006-11-16
Amwpfiqvy(给我分吧,让我升仙):哪个有问题????正确的写法是什么????
回复
szjq 2006-11-16
太谢谢了,解决大问题了
回复
Apq001 2006-11-16
楼上的写法会有问题,每删除一个就会跳过一个。呵呵。
回复
myvicy 2006-11-16
同意楼上!
for( var i = 0; i < arr.length; i++ )
for( var j = i + 1 ; j < arr.length; j++ )
if( arr[j] == arr[i] ) arr.splice(j,1);
回复
Apq001 2006-11-16
for( var i = 0; i < arr.length; i++ )
{
for( var j = arr.length - 1; j > i; j-- )
{
if( arr[j] == arr[i] )
{
arr.splice(j,1);
}
}
}
回复
懒得去死 2006-11-16
array_pop
回复
发帖
JavaScript
创建于2007-09-28

8.5w+

社区成员

Web 开发 JavaScript
申请成为版主
帖子事件
创建了帖子
2006-11-16 05:26
社区公告
暂无公告