JavaScript-JavaScript脚本为Array对象添加一个去除重复项的方法?
JavaScript脚本为Array对象添加一个去除重复项的方法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
JavaScript脚本为Array对象添加一个去除重复项的方法?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
Array.prototype.rmRepeat = function(){
var res = [],hash={};
var len=this.length;
for (var i=0;i<len ;i++) {
if( !hash.hasOwnProperty('_'+this[i]) )
{//直接用!hash['_'+this[i]]判断好像也行
hash['_'+this[i]] = 1;
res.push(this[i]);
}
}
return res;
}
var a = [1,2,2,4,'a','b','hasOwnProperty','ccc'];
alert(a.rmRepeat());
因为不是在特定情况下使用(如数组项全是数字),因此需要更严谨的逻辑。
Array.prototype.strip = function() {
var hash = {}, result = [];
for(var i = 0, len = this.length; i < len; i++) {
var value = this[i];
if (!hash.hasOwnProperty("$" + value)) {
//增加"$"前缀,是为了避免value与Object的原生属性冲突。
result.push(value);
hash["$" + value] = true;
}
}
return result;
}
//测试
var arr = [1,2,3,4,4,1,'a','b','a'];
alert(arr.strip()); //1,2,3,4,a,b
<script type="text/javascript">
function stripArray(arr){
var rs = new Array();
for(var i=0;i<arr.length;i++){
var s = ","+rs.join(",")+",";
if(!s.match(","+arr[i]+",")){
rs.push(arr[i]);
}
}
return rs;
}
var r = new Array(1,2,212,2, 212,1,5);
alert(stripArray(r).toString());
</script>
//参考网上别人写的一个方法,感觉这个的效率应该会更高
<script type="text/javascript">
var uniq = function (arr) {
var a = [],
o = {},
i,
v,
len = arr.length;
if (len < 2) {
return arr;
}
for (i = 0; i < len; i++) {
v = arr[i];
if (o[v] !== 1) {
a.push(v);
o[v] = 1;
}
}
return a;
}
var r = new Array(1,2,212,2, 212,1,5);
alert(uniq(r).toString());
</script>