homepage Welcome to WebmasterWorld Guest from 50.16.130.188
register, free tools, login, search, subscribe, help, library, announcements, recent posts, open posts,
Pubcon Platinum Sponsor 2014
Home / Forums Index / Code, Content, and Presentation / JavaScript and AJAX
Forum Library, Charter, Moderator: open

JavaScript and AJAX Forum

    
sort()
sorting a two dimensional array
nyteshade




msg:4401170
 3:16 pm on Dec 24, 2011 (gmt 0)

I have a document that contains a number of abbr and acronym elements that I hope to 1collect, 2sort, 3eliminate duplicates and 4display in a definition list. I'm on 2sort and here's what I have so far:


//loop thru abbr and acronym elements
var mylen = mycoll.length;
var mynodes_titles = new Array();
for(var i=0; i<mylen; i++){
var curr_ele = mycoll[i];
//if the element content is empty loop back
if (curr_ele.lastChild.length < 1) continue;
//
var mynodevalue = mycoll[i].lastChild.nodeValue;
var mytitle = mycoll[i].getAttribute("title");

//debugging purposes
x = typeof(mynodevalue);
y = typeof(mytitle);

//create a one dimensional array
nodevalue_title = [mynodevalue,mytitle];
//create a two dimensional array
mynodes_titles[i] = nodevalue_title;
}
mynodes_titles = mynodes_titles.sort();


I thought I had my head around arrays as objects but I'm confused again. The code mynodes_titles.sort() actually sorts the array in alphabetical order and I did not expect it to? I assumed it would use the mynodes_titles numeric index? I'm pleased it did sort, I just do not understand the how. I was prepared for a hard row to hoe given all I've read about js sorting; but poof! It displayed in alpha order. How'd it do dat! Thanks all.

 

penders




msg:4401175
 4:37 pm on Dec 24, 2011 (gmt 0)

The Array.sort() method, without passing a sort function, will sort the array values alphabetically. It does not sort by the indices/keys - the array is already sorted by the numeric index - this is the order of the array. The array is sorted in-place, so you do not need to assign it back to the original array. The Array is reindexed numerically.

mynodes_titles array is sorted in-place...
mynodes_titles.sort();

Array values are temporarily converted (if necessary) to strings in order to perform the comparison. In your case, the array values are arrays themselves so these are converted to a comma-separated list eg. "nodevalue,mytitle" - so it will effectively be sorted by the nodevalue.

nyteshade




msg:4401464
 11:55 am on Dec 26, 2011 (gmt 0)

Thanks penders, I should have known that; must of had PHP ksort cannibalizing my memory!

Global Options:
 top home search open messages active posts  
 

Home / Forums Index / Code, Content, and Presentation / JavaScript and AJAX
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved