JavaScript-JavaScript脚本为Array对象添加一个去除重复项的方法?

JavaScript-JavaScript脚本为Array对象添加一个去除重复项的方法?

归属感 发布于 2016-11-06 字数 58 浏览 1178 回复 4

JavaScript脚本为Array对象添加一个去除重复项的方法?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

想挽留 2017-10-18 4 楼
function remRepeatEles( array )
{
var dic = {};
for( var i = 0, len = array.length; i < len; i++ )
{
var v = array[i];
if( dic[v] == null )
{
dic[v] = v;
}
else
{
array.splice(i, 1);
i--;
}
}
return array;
}

//测试
var arr = [1,2,3,4,4,1,'a','b','a'];
alert(remRepeatEles(arr)); //1,2,3,4,a,b
泛泛之交 2017-07-29 3 楼

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());

夜无邪 2017-07-16 2 楼

因为不是在特定情况下使用(如数组项全是数字),因此需要更严谨的逻辑。

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

想挽留 2017-01-06 1 楼

<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>