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去除数组中重复的数字的主要内容,如果未能解决你的问题,请参考以下文章