JS去除数组中重复的数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS去除数组中重复的数字相关的知识,希望对你有一定的参考价值。

参考技术A 利用js中对象的特性(对象中属性具有唯一性)将数组中重复的数值项去掉。

例如数组: <code>var arr = [35,2,1,2,10,2,3,5,10,13];</code>

1.将数组转换为对象
var toObject = function (arr) var obj = ; // 声明一个对象容器 var j; for(var i = 0; j = arr.length, i<j; i++) //将数组中的值作为对象的键,然后给个值 obj[arr[i]] = true; return obj;

2.将对象转化为数组
function keys(obj) var arr = []; // 私有对象 for(var attr in obj) // 判断对象是否有attr属性 if(obj.hasOwnProperty(attr)) arr.push(attr); // 将对象属性的键放到数组中 return arr;

3.调用这两个方法
function uniq(newArr) return keys(toObject(newArr));
这样就可以把数组中重复的数字去掉了。

使用<code>alert(uniq(arr));</code>测试一下

js去除数组中的重复项

js的Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,可以自己对其进行扩展。

第一种思路是先把数组进行排序,然后比较前后元素是否相等,相等则continue,否则就记录到返回值中:

Array.prototype.unique = function () {
    var temp = [];
      this.sort();
      var len = this.length;
      for(i = 0; i < len; i++) {
          if( this[i] == this[i+1]) {
            continue;
        }
        temp[temp.length]=this[i];
      }
      return temp;
}

另外,也可以使用js动态语言的特性,使用一个动态更新的对象来判断元素是否重复:

function unique(arr) {
    var result = [], hash = {};
    for (var i = 0, elem; (elem = arr[i]) != null; i++) {
        if (!hash[elem]) {
            result.push(elem);
            hash[elem] = true;
        }
    }
    return result;
}

 

以上是关于JS去除数组中重复的数字的主要内容,如果未能解决你的问题,请参考以下文章

js如何去除数组中重复项

js怎么去除数组中的重复的数据

关于如何去除数组中重复项

js数组中如何去除重复值?

js去除数组中的重复项

C#编写一个方法,去除数组中重复数据。