<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Martin Ström &#187; sorting</title>
	<atom:link href="http://my-domain.se/tag/sorting/feed/" rel="self" type="application/rss+xml" />
	<link>http://my-domain.se</link>
	<description></description>
	<lastBuildDate>Fri, 10 Sep 2010 12:06:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Multi-dimensional array sorter</title>
		<link>http://my-domain.se/multi-dimensional-array-sorter/</link>
		<comments>http://my-domain.se/multi-dimensional-array-sorter/#comments</comments>
		<pubDate>Sat, 24 Nov 2007 09:41:54 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[konst-teknik]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[sorting]]></category>

		<guid isPermaLink="false">http://burnfield.com/martin/2007/11/24/multi-dimensional-array-sorter/</guid>
		<description><![CDATA[The other day when working on some small updates on konst-teknik.se I wanted to sort the projects in a multi dimensional way, and take the other factors than the first into account. JavaScript&#8217;s Array#sort only supports one dimensional sorting so I wrapped my own sorter. The results turned up pretty good (at least compared to [...]]]></description>
			<content:encoded><![CDATA[<p>The other day when working on some small updates on <a href="http://konst-teknik.se">konst-teknik.se</a> I wanted to sort the projects in a multi dimensional way, and take the other factors than the first into account. JavaScript&#8217;s <code>Array#sort</code> only supports one dimensional sorting so I wrapped my own sorter.</p>

<p>The results turned up pretty good (at least compared to the first test), or perhaps I just like recursing functions.</p>

<pre><code>

var sortOrder = {
  'cat-no': ['cat-no', 'name', 'type', 'year'],
  'name':   ['name',   'type', 'year', 'cat_no'],
  'year':   ['year',   'name', 'type', 'cat_no'],
  'type':   ['type',   'name', 'year', 'cat_no']
};

function sort(order) {
  var ordering = sortOrder[order], length = ordering.length;
  $$('#projects > li').sort(function(left, right) {
    left = Project.find(left), right = Project.find(right);
    return (function(index) {
      var a = left.getSortValue(ordering[index]),
          b = right.getSortValue(ordering[index]);
      return a < b ? -1 : a > b ? 1 :
        index < length ? arguments.callee(++index) : 0;
    })(0);
  }).each(function(project) {
    project.parentNode.appendChild(project);
  });
}

</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://my-domain.se/multi-dimensional-array-sorter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
