数组去重复算法

1.遍历法

  var ary=[1,23,12,12,1,12,32,1,1];
  function noRepetition(ary){
//    1.创建新数组
    var newAry=[];
//    2.遍历老数组,拿到每个值,看新数组有这个值吗,没有添加进去,
    for(var i=0;i<ary.length;i++){
      var cur=ary[i];
      if (newAry.indexOf(cur)==-1){     indexOf IE8以前不支持,
        newAry.push(cur)
      }
    }
//    3.返回新的数组
    return newAry;
  }
  var result=noRepetition(ary);
  console.log(result)                   //方法不改变元素组

兼容版:

//兼容IE低版本的indexOf方法  if(!Array.prototype.indexOf){
    Array.prototype.indexOf=function(para){
      var result=-1;
      var temp=para;
      if (!this.length){
        return result
      }
//      谁调用我,我就便利谁
      for(var i=0;i<this.length;i++){
        var cur=this[i]
        if (cur==temp){
          result=temp;
          break;
        }
      }
      return result
    }
  }

2.对象键值对

  var ary=[1,23,12,12,1,12,32,1,1];
function noRepetition(ary){
  var obj={};
//  1.拷贝一份原数组
  var temp=ary.slice(0);
//  2.遍历
  for(var i=0;i<temp.length;i++){
    var cur=temp[i];
//    如果对象obj[cur]==undefined表示,对象没有该属性,添加该属性
    if (!obj[cur]){
      obj[cur]=cur;
    }else{
//      否则,证明对象中有该属性,temp数组删除重复元素
      temp.splice(i,1);
      i--;
    }
  }
  return temp;
}
  var result=noRepetition(ary);
  console.log(result)

3.排序去重复法

  var ary=[1,1,2,1,33,22,75,15,2,2,1,2,1,3,4,5,5,75];
  function noRepetition(ary){
    var result=[];
//    1.排序
    var temp=ary.sort(function(a,b){
      return a-b
    });
//    2.遍历排好序的数组
    for(var i=0;i<temp.length;i++){
//      3.当 当前值不等于后一项的值时
      if (temp[i]!==temp[i+1]){
//        4.空数组中添加当前项
//        注意,当我们最后一项时,他的后一项时undefined的,所以最后一项可以添加进来
        result.push(temp[i])
      }
    }
    return result
  }
  console.log(noRepetition(ary))

原文地址:https://www.cnblogs.com/liangfc/p/8695741.html

时间: 2024-10-27 06:11:57

数组去重复算法的相关文章

js 数组去重复、内置方法

1.使用js 数组去重复: 方法①: var arr=[1,2,1,5,2,3,5,1,6,9]; function deRepeat(){ var newArray=[]; var obj={}; var index=0; var len=arr.length; for(var i=0;i<len;i++){ if(obj[arr[i]]==undefined){//不存在 obj[arr[i]]=1; newArray[index++]=arr[i]; }else if(obj[arr[i]

javascript中数组去重复方式汇总

JavaScript中关于数组去重复的方式很多,下面汇总了常见的几种实现方式. 1 /*实现一:基于原型扩展*/ 2 Array.prototype.removeDuplicate = function() { 3 var arrObj = {}, 4 newArr = [], 5 len = this.length; 6 for(var i = 0; i < len; i++) { 7 var value = this[i], 8 type = (typeof value) + value;

Js数组去重复取唯一值

function isBigEnough(element) { return element >= 10; } var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); // filtered is [12, 130, 44] function onlyUnique(value, index, self) { return self.indexOf(value) === index; } // usage example: var a = [

数组去重复及记录重复个数(以及遍历map的四种方法)

private static void check(String[] array) { // 字符串数组中,含有不重复的字符串有哪些?每一个重复的个数 Map<String,Integer> map = new HashMap<>(); for(int i=0;i<array.length;i++){ if(map.get(array[i]) != null){ map.put(array[i], map.get(array[i]) + 1);// value + 1 } e

数组去重复,{4,2,4,6,1,2,4,7,8}

思想:拿第1个与第2个.第3个.第4个.第5个......比较,如果重复,就从list里去掉,得到新的list 再拿新的list的第2个与第3个.第4个.第5个......比较,如果重复,就从list里去掉,得到新的list. ...... 就得到了不重复的了, public static void main(String[] args) {   List<Integer> all = new ArrayList<>();   int[] num = { 4, 2, 4, 6, 1

Javascript - 数组去重复

这里我使用的场景是将表单中所有的input的值塞入数组中,然后通过去除重复的值.如果数组的长度和原数组的长度一致,说明没有重复,如果不一致(少于)则报错 //通过$.unique对数组进行“去重”,再和原数组对比,如果不相等说明有重复的值.这种方法的缺点是无法获取重复的对象然后提示用户 if (Acc_arr.length != $.unique(Acc_arr).length) { //发现重复 layer.msg("检测到银行卡号重复.银行信息关系到划扣操作.开发人员请求你认真检查.确保正确

数组去重复

举例 数组  [1,1,7,4] 去重,并且去掉重复的选项为 [7,4] <!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> </head> <body> <script> Array.prototype.unique3 = funct

js 数组去重复

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> window.onload = function (){ var arr = [11,13,22,11,5,13,7]; fun

使用es6的set和map实现数组去重复

var set = new Set();var arr = [1, 2, 3, 3, 2, 1];arr.map(val => set.add(val));// arr.map(function(val) {// set.add(val);// })arr = [];for(i of set) { arr.push(i);}console.log(arr) // [1, 2, 3] function dedupe(array) { return Array.from(new Set(array)