去掉数组中的重复项

假设有一个数组:
var arr = [1,1,3,4,5,6,3,8,5,6,3,8,0,9,9];
想要去掉重复的数组元素得到 [1, 3, 4, 5, 6, 8, 0, 9] 怎么实现呢?

【第一种:】利用indexOf和空数组实现
var arr = [1,1,3,4,5,6,3,8,5,6,3,8,0,9,9];
function indexOf(arr, item) {
for (var i = 0;i<arr.length;i++) {
if (arr[i] == item) {
return i;
}
}
return -1;
}
function unique(s_arr){
var arrempt = [];
for(var j =0 ;j<arr.length;j++){
if(indexOf(arrempt,arr[j])==-1){
arrempt.push(arr[j])
}
}
return arrempt;
}
console.log(unique(arr));//[1, 3, 4, 5, 6, 8, 0, 9]

也可通过扩展Array.prototype.indexOf:
var arr = [1,1,3,4,5,6,3,8,5,6,3,8,0,9,9];
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement) {
//如果[1,2].indexOf 这样调用
//this 就是 [1,2]
var arr = this;
for (var i = 0;i<arr.length;i++) {
if (arr[i] == item) {
return i;
}
}
return -1;
}
}
function unique2(s_arr){
var arrempt = [];
for (var k = 0;k <arr.length;k++){
if(arrempt.indexOf(arr[k]) == -1){
arrempt.push(arr[k])
}
}
return arrempt;
}
console.log(unique2(arr));//[1, 3, 4, 5, 6, 8, 0, 9]

不过值得注意的是:了解hax的api设计讲座的知道扩展Object.prototype的做法是不推荐的,或者尽量少用的。在以前的项目里面自己在Array.prototype扩展了类似的indexOf,当然在IE8和以下的版本可能还是走你扩展的这个api,但是像ff等支持的高于JavaScript1.6版本以上的浏览器,它会去找原生的indexOf
【第二种:】利用splice实现
[url]http://xxing22657-yahoo-com-cn.iteye.com/blog/1038480[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值