数组去重整理

找到重复元素

  • 先排序,再比较相邻元素是否相同
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
var sortedArr=arr.sort();//字典顺序,输出:111,2,3,4,4,5,7,9,9
var results = [];
for (var i = 0; i < arr.length - 1; i++) {
   if (sortedArr[i + 1] == sortedArr[i]) {
       results.push(sortedArr[i]);
    }
}
console.log(results);

得到干净数组

  • 利用对象字面量的key与value关联性
function distinct(arr) {
  var obj = {}, i = 0, len = 0;
  if (Array.isArray(arr) && arr.length > 0) {
      len = arr.length;
      for (i = 0; i < len; i += 1) {
        obj[arr[i]] = arr[i];
      }
     return Object.keys(obj);
   }
  return [];
}

Object.keys(obj),其返回的是对象的key值
var obj = { 0 : “a”, 1 : “b”, 2 : “c”}; console.log(Object.keys(obj)); //0,1,2
var arr = [“a”, “b”, “c”]; console.log(Object.keys(arr)); //0,1,2

  • 利用jquery
var arr = ["1","2","3","4","5","4","3"];
var uniqueArr = [];
$.each(arr, function(i, el){
    if($.inArray(el, uniqueArr) === -1)
       uniqueArr.push(el);
});//["1", "2", "3", "4", "5"]
  • 利用数组方法indexOf
function unique(array){
  var n = [];//临时数组
  for(var i = 0;i < array.length; i++){
    if(n.indexOf(array[i]) == -1)
       n.push(array[i]);
    }
  return n;
  }
var arr=[1,3,2,2,3,2,3,2,1] unique(arr);//[1,3,2]
  • 自己写的方法,想利用哈希散列,但实现的不好,能找到重复的元素,但当重复次数大于2次时,值会重复
function dash(arr){
var m=[];
var n=[];
for(var i=0;i<arr.length;i++){
  if(m[arr[i]]==0){
     n.push(arr[i]);
  }else
  m[arr[i]]=0;
}
return n;
}

var b=[2,3,2,4,3,1,5];
dash(b); //[2,3]

var a=[4,2,2,3,3,4,5,4,5,5,1]; //重复多次

dash(a); //[2, 3, 4, 4, 5, 5]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值