www.webdeveloper.com
Results 1 to 7 of 7

Thread: remove duplicate strings that are case insensitive

  1. #1
    Join Date
    Jan 2013
    Posts
    3

    remove duplicate strings that are case insensitive

    How can i make this script case insensitve (e.g. at the moment i get 'damon' and 'Damon'. Say i just want to keep the lowercase 'damon'?)?

    var unique = function(origArr) {
    var newArr = [],
    origLen = origArr.length,
    found,
    x, y;

    for ( x = 0; x < origLen; x++ ) {
    found = undefined;
    for ( y = 0; y < newArr.length; y++ ) {
    if ( origArr[x] === newArr[y] ) {
    found = true;
    break;
    }
    }
    if ( !found) newArr.push( origArr[x] );
    }
    return newArr;
    }

    var myarray = ['jeffrey', 'allie', 'patty', 'damon', 'Damon', 'zach', 'jeffrey', 'allie', 'patty', 'damon', 'zach', 'joe'];
    myarray = unique(myarray);
    myarray.join(', ');

  2. #2
    Join Date
    Dec 2005
    Location
    FL
    Posts
    7,373

    Lightbulb

    One possibility, of many ...
    Code:
    <!DOCTYPE HTML>
    <html>
    <head>
    <title> Untitled </title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript">
    // Modified from: http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array
    
    function unique(arr) {
      var b = {};
      for (var i=0; i<arr.length; i++) { b[arr[i].toUpperCase()]=arr[i].toLowerCase(); }
      var c = [];
      for (var key in b) { c.push(b[key]); }
      return c;
    }
    window.onload = function() {
      alert(a+'\n\n'+unique(a));
    }
    var a = ['jeffrey','allie','patty','damon','Damon','zach','Jeffrey','allie','patty','damon','zach','joe'];
    </script>
    
    </head>
    <body>
    
    </body>
    </html>

  3. #3
    Join Date
    Oct 2010
    Location
    Versailles, France
    Posts
    1,266
    A one line variant :
    Code:
    var a = ['jeffrey','allie','patty','damon','Damon','zach','Jeffrey','allie','patty','damon','zach','joe'];
    
    alert(a.join(',').toLowerCase().split(',').sort().join(',').replace(/(([^,]+),)(?=\2)/g,'').split(','));
    Last edited by 007Julien; 01-03-2013 at 11:50 AM.

  4. #4
    Join Date
    Dec 2005
    Location
    FL
    Posts
    7,373
    Pretty neat!

  5. #5
    Join Date
    Jan 2013
    Posts
    3
    Thank you both these are great and a big help.
    With yours Julien I get the result: 'allie, damon, jeffrey, joe, patty, zach,jeffrey' (for some reason i get an extra 'jeffery')?

    As an alternative how would i modify the script to have leading caps (Allie, Damon, Jeffrey, Joe, Patty, Zach)?

    Thanks again

  6. #6
    Join Date
    Oct 2010
    Location
    Versailles, France
    Posts
    1,266
    I do not understand your extra jeffrey. A remove spaces of the string with a replace (/\s/g,'') could be useful ?
    Since it's easy to capitalize the first letters of sentences with a new method or directly
    Code:
    
    // A new method 
    String.prototype.ucFirst=function(){return this.replace(/\b(\w)/g,function(){return arguments[1].toUpperCase()})}
    alert("james o'connor".ucFirst());
    
    var a = ['jeffrey','allie','patty','damon','Damon','zach','Jeffrey','allie','patty','damon','zach','joe'];
    var b=a.join(',').toLowerCase().split(',').sort().join(',').replace(/(([^,]+),)(?=\2)/g,'').replace(/\b(\w)/g,function(){return arguments[1].toUpperCase();}).split(',');
    alert(b);
    EDIT : Your string ('allie, damon, jeffrey, joe, patty, zach,jeffrey') is made with spaces before damon, jeffrey... zach, and not before the first allie and the last jeffrey ! Then use «simply» a
    Code:
    var b=a.join(',').toLowerCase().replace(/\s/g,'').split(',').sort().join(',').replace(/(([^,]+),)(?=\2)/g,'').replace(/\b(\w)/g,function(){return arguments[1].toUpperCase();}).split(',');
    Last edited by 007Julien; 01-04-2013 at 06:48 AM. Reason: complements

  7. #7
    Join Date
    Jan 2013
    Posts
    3
    Spot on this has worked perfectly, thanks for your time.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles