In Javascript, how do I check if an array has duplicate values?

前端 未结 3 1603
渐次进展
渐次进展 2020-11-28 03:39

Possible Duplicate:
Easiest way to find duplicate values in a javascript array

How do I check if an array has

3条回答
  •  攒了一身酷
    2020-11-28 04:23

    Another approach (also for object/array elements within the array1) could be2:

    function chkDuplicates(arr,justCheck){
      var len = arr.length, tmp = {}, arrtmp = arr.slice(), dupes = [];
      arrtmp.sort();
      while(len--){
       var val = arrtmp[len];
       if (/nul|nan|infini/i.test(String(val))){
         val = String(val);
        }
        if (tmp[JSON.stringify(val)]){
           if (justCheck) {return true;}
           dupes.push(val);
        }
        tmp[JSON.stringify(val)] = true;
      }
      return justCheck ? false : dupes.length ? dupes : null;
    }
    //usages
    chkDuplicates([1,2,3,4,5],true);                           //=> false
    chkDuplicates([1,2,3,4,5,9,10,5,1,2],true);                //=> true
    chkDuplicates([{a:1,b:2},1,2,3,4,{a:1,b:2},[1,2,3]],true); //=> true
    chkDuplicates([null,1,2,3,4,{a:1,b:2},NaN],true);          //=> false
    chkDuplicates([1,2,3,4,5,1,2]);                            //=> [1,2]
    chkDuplicates([1,2,3,4,5]);                                //=> null
    

    See also...

    1 needs a browser that supports JSON, or a JSON library if not.
    2 edit: function can now be used for simple check or to return an array of duplicate values

提交回复
热议问题