Array duplicates

Check for duplicate values in Array, simple (return t/f) or returning array of duplicate values.

by KooiInc MeHere

HTML

<script src="//www.nicon.nl/genericsvc/helpers.js"></script>
<h1>Array extension to check for duplicate values in an array</h1>
<b>Examples</b><hr />

CSS

body{font:0.8em verdana,arial; margin: 2rem;}
h1 {font-weight:bold; font-size:1.2em;margin-bottom:0.8em}
code {font:1em courier new;color:green}

JavaScript

function chkDuplicates(returnValues,arr) {
  arr = arr || this;
  let len = arr.length; 
  let tmp = {}; 
  const arrtmp = arr.slice();
  const dupes = [];
  arrtmp.sort();
  
  while(len--){
   let val = arrtmp[len];
   
   if (/nul|nan|infini/i.test(String(val))) {  val = String(val); }
   if (tmp[JSON.stringify(val)]){ 
   	if (!returnValues) {return true;} 
       dupes.push(val);
    }
    tmp[JSON.stringify(val)] = true;
  }
  return !returnValues ? false : dupes.length ? dupes.reverse() : null;
}

// to *not* pollute the global namespace, see
// https://github.com/KooiInc/ProtoXT
Array.prototype.dupes = Array.prototype.dupes || chkDuplicates;

//usage examples
$H.displayln (
 '<code>[1,2,3,4,5] .dupes()</code> => '+
 [1,2,3,4,5].dupes(),
 '<code>[1,2,3,4,5,9,10,5,1,2] .dupes()</code> => '+
 [1,2,3,4,5,9,10,5,1,2].dupes(),
 '<code>[{a:1,b:2},1,2,3,4,{a:1,b:2},[1,2,3]] .dupes()</code> => '+
 [{a:1,b:2},1,2,3,4,{a:1,b:2},[1,2,3]].dupes(),
 '<code>[null,1,2,3,4,{a:1,b:2},NaN] .dupes()</code> =>'+
 [null,1,2,3,4,{a:1,b:2},NaN].dupes(),
 '<code>[1,2,3,4,5,1,2] .dupes(true)</code> => '+
 [1,2,3,4,5,1,2].dupes(true),
 '<code>[1,2,3,4,5] .dupes(true)</code> => '+
 [1,2,3,4,5].dupes(true)
);