Function that compares 2 alpha-numeric values?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • success_ny@yahoo.com

    Function that compares 2 alpha-numeric values?

    Does anyone have a code snippet to compare those values so I can sort
    the array of alpha-numeric values that include both characters and
    integers in it?

    I.e., if we have values like 4236 and 123234, I want 4236 to be second
    because 4 is bigger than 1 rather than using the numeric comparison.
    The strings can include character values and strings. Basically, I have
    the bubble sort function, the question is how to compare those types of
    strings in the alpha-numeric order.

    i.e.,

    A83745
    B34974
    127734
    34456
    788

    I looked all over the web thinking that this simple question would be
    answered somewhere, but could not find the answer. Please help.

    Thanks!

  • VK

    #2
    Re:

    success_ny@yaho o.com wrote:[color=blue]
    > Does anyone have a code snippet to compare those values so I can sort
    > the array of alpha-numeric values that include both characters and
    > integers in it?
    >
    > I.e., if we have values like 4236 and 123234, I want 4236 to be second
    > because 4 is bigger than 1 rather than using the numeric comparison.
    > The strings can include character values and strings. Basically, I have
    > the bubble sort function, the question is how to compare those types of
    > strings in the alpha-numeric order.
    >
    > i.e.,
    >
    > A83745
    > B34974
    > 127734
    > 34456
    > 788
    >
    > I looked all over the web thinking that this simple question would be[/color]


    The time I wrote this script (a while ago) I was crying for Perl with
    his "cmp" and shuttle <=> Get's really "if'y" in JavaScript w/o them
    :-)


    function alfanum(a,b) {
    var result = 0;
    if ((typeof(a)=='n umber')&&(typeo f(b)=='number') ) {
    result = a-b;
    }
    else if ((typeof(a)=='s tring')&&(typeo f(b)=='string') ) {
    if (a < b) {result = -1;}
    else if (a > b) {result = 1;}
    else {result = 0;}
    }
    else if (typeof(a)=='st ring'){
    result = 1;
    }
    else {
    result = -1
    }
    return result;
    }

    var arr = [9,'A',8,'B',7,' C',6,'D',5,'E', 4,'F',3,'G',2,' H',1];

    alert(arr.sort( alfanum));

    Comment

    • Dr John Stockton

      #3
      Re: Function that compares 2 alpha-numeric values?

      JRS: In article <1121960567.218 840.181840@g44g 2000cwa.googleg roups.com>
      , dated Thu, 21 Jul 2005 08:42:47, seen in news:comp.lang. javascript,
      success_ny@yaho o.com posted :[color=blue]
      >Does anyone have a code snippet to compare those values so I can sort
      >the array of alpha-numeric values that include both characters and
      >integers in it?
      >
      >I.e., if we have values like 4236 and 123234, I want 4236 to be second
      >because 4 is bigger than 1 rather than using the numeric comparison.
      >The strings can include character values and strings. Basically, I have
      >the bubble sort function, the question is how to compare those types of
      >strings in the alpha-numeric order.
      >
      >i.e.,
      >
      >A83745
      >B34974
      >127734
      >34456
      >788
      >
      >I looked all over the web thinking that this simple question would be
      >answered somewhere, but could not find the answer. Please help.[/color]

      As you've looked all over the Web I assume that there is no need to
      repeat what you found on my Web site.

      The default array sort would be to treat letters as bigger than digits;
      no added code would be needed. That would give 12 34 78 A8 B3. You
      don't need to write and download a sort algorithm. Use that order if
      you can.

      How can a string include a string?

      You need to do one of two things : write a comparison function for
      array.sort to use, or transform your data so that it will sort in the
      right order, de-transforming afterwards. Since array.sort on a list of
      N items will call the sort function >0(N) times, you should transform
      the data if N is large.

      The simplest transform might be to take each character of a string in
      turn (I assume less than 240 possibilities), look up its rank in a
      priority list, encode that as two Hex characters after adding 16, pad
      with a "character" 00, and append the original data so that de-
      transformation is just a substring operation.

      --
      © John Stockton, Surrey, UK. ?@merlyn.demon. co.uk Turnpike v4.00 IE 4 ©
      <URL:http://www.jibbering.c om/faq/> JL/RC: FAQ of news:comp.lang. javascript
      <URL:http://www.merlyn.demo n.co.uk/js-index.htm> jscr maths, dates, sources.
      <URL:http://www.merlyn.demo n.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.

      Comment

      • askMe

        #4
        Re: Function that compares 2 alpha-numeric values?



        success_ny@yaho o.com wrote:[color=blue]
        > Does anyone have a code snippet to compare those values so I can sort
        > the array of alpha-numeric values that include both characters and
        > integers in it?
        >
        > I.e., if we have values like 4236 and 123234, I want 4236 to be second
        > because 4 is bigger than 1 rather than using the numeric comparison.
        > The strings can include character values and strings. Basically, I have
        > the bubble sort function, the question is how to compare those types of
        > strings in the alpha-numeric order.
        >
        > i.e.,
        >
        > A83745
        > B34974
        > 127734
        > 34456
        > 788
        >
        > I looked all over the web thinking that this simple question would be
        > answered somewhere, but could not find the answer. Please help.
        >
        > Thanks![/color]

        Try a loop over the whole set first to separate the numeric from the
        alphas with isNan. Run a sort on the numbers array, then a sort on the
        alpha array. Add the sort alpha array elements to the end of the
        numeric array.



        Comment

        Working...