 					sortDirection = sortDirections && sortDirections[p] < 0 ? Array.DESCENDING : 0;
 					
 					i = array.length;
-					if (param === array)
+					if (param is Array || param is Vector)
 						while (i--)
-							values[i][p] = array[i];
+							values[i][p] = param[i];
 					else if (param is Function)
 						while (i--)
 							values[i][p] = param(array[i]);

		/**
		 * Sorts an Array (or Vector) of items in place using properties, lookup tables, or replacer functions.
		 * @param array An Array (or Vector) to sort.
		 * @param params One of several formats: A property name, lookup table, replacer function, or an Array of such parameters to sort on multiple values.
		 * @param sortDirections Specifies sort direction(s) (1 or -1) corresponding to the params.
		 * @param inPlace Set this to true to modify the original Array (or Vector) in place or false to return a new, sorted copy.
		 * @param returnSortedIndexArray Set this to true to return a new Array of sorted indices.

			var param:*;
			var sortDirection:int;
			var i:int;
			if (params != array && params is Array)
			{
				var fields:Array = new Array(params.length);
				var fieldOptions:Array = new Array(params.length);
