# Sorry an array with empty file

**URL:** https://forum.kirupa.com/t/sorry-an-array-with-empty-file/283241
**Category:** Uncategorized
**Created:** [March 4, 2009, 1:54am UTC](https://forum.kirupa.com/t/sorry-an-array-with-empty-file/283241 "2009-03-04T01:54:26Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![chup](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/chup/32/925_2.png) [@chup](https://forum.kirupa.com/u/chup)
#### Post date: [March 4, 2009, 1:54am UTC](https://forum.kirupa.com/t/sorry-an-array-with-empty-file/283241/1 "2009-03-04T01:54:26Z")

</div>

Hi all, here what I need to achieve, I have a list of 99 item (something like a phone book) and I will like to sort them in different method. Part of the 99 item might be empty, so the requirement is to move the empty field behind the sorted data in every sorting behavior

With a help of a friend, here the code we have so far:

```auto

var SDData:Array = switchedIndices=[];
SDData.push({index:1, num:"61101231", name:"Christopher"});
SDData.push({index:2, num:"61101232", name:"Ronald"});
SDData.push({index:3, num:"61101233", name:"Mary"});
SDData.push({index:4, num:"61101234", name:"Lisa"});
SDData.push({index:5, num:"61101235", name:"Michelle"});
SDData.push({index:6, num:"61101236", name:"John"});
SDData.push({index:7, num:"61101237", name:"Daniel"});
SDData.push({index:8, num:"61101238", name:"Anthony"});
SDData.push({index:9, num:"61101239", name:"Patricia"});
SDData.push({index:10, num:"61101240", name:"Nancy"});

SDData.push({index:11, num:"61101241", name:"Laura"});
SDData.push({index:12, num:"62201231", name:"Robert"});
SDData.push({index:13, num:"62201232", name:"Paul"});
SDData.push({index:14, num:"62201233", name:"Kevin"});
SDData.push({index:15, num:"62201234", name:"Linda"});
SDData.push({index:16, num:"62201235", name:"Karen"});
SDData.push({index:17, num:"62201236", name:"Sarah"});
SDData.push({index:18, num:"62201237", name:"Michael"});
SDData.push({index:19, num:"62201238", name:"Mark"});
SDData.push({index:20, num:"62201239", name:"Jason"});

SDData.push({index:21, num:"62201240", name:"Barbara"});
SDData.push({index:22, num:"63301231", name:"Betty"});
SDData.push({index:23, num:"63301232", name:"Kimberly"});
SDData.push({index:24, num:"63301233", name:"William"});
SDData.push({index:25, num:"63301234", name:"Donald"});
SDData.push({index:26, num:"63301235", name:"Jeff"});
SDData.push({index:27, num:"63301236", name:"Elizabeth"});
SDData.push({index:28, num:"63301237", name:"Helen"});
SDData.push({index:29, num:"63301238", name:"Deborah"});
SDData.push({index:30, num:"63301239", name:"David"});

SDData.push({index:31, num:"-", name:"-"});
SDData.push({index:32, num:"-", name:"-"});
SDData.push({index:33, num:"-", name:"-"});
SDData.push({index:34, num:"-", name:"-"});
SDData.push({index:35, num:"-", name:"-"});
SDData.push({index:36, num:"-", name:"-"});
SDData.push({index:37, num:"-", name:"-"});
SDData.push({index:38, num:"-", name:"-"});
SDData.push({index:39, num:"-", name:"-"});
SDData.push({index:40, num:"-", name:"-"});

SDData.push({index:41, num:"-", name:"-"});
SDData.push({index:42, num:"-", name:"-"});
SDData.push({index:43, num:"-", name:"-"});
SDData.push({index:44, num:"-", name:"-"});
SDData.push({index:45, num:"-", name:"-"});
SDData.push({index:46, num:"-", name:"-"});
SDData.push({index:47, num:"-", name:"-"});
SDData.push({index:48, num:"-", name:"-"});
SDData.push({index:49, num:"-", name:"-"});
SDData.push({index:50, num:"-", name:"-"});

SDData.push({index:51, num:"-", name:"-"});
SDData.push({index:52, num:"-", name:"-"});
SDData.push({index:53, num:"-", name:"-"});
SDData.push({index:54, num:"-", name:"-"});
SDData.push({index:55, num:"-", name:"-"});
SDData.push({index:56, num:"-", name:"-"});
SDData.push({index:57, num:"-", name:"-"});
SDData.push({index:58, num:"-", name:"-"});
SDData.push({index:59, num:"-", name:"-"});
SDData.push({index:60, num:"-", name:"-"});

SDData.push({index:61, num:"-", name:"-"});
SDData.push({index:62, num:"-", name:"-"});
SDData.push({index:63, num:"-", name:"-"});
SDData.push({index:64, num:"-", name:"-"});
SDData.push({index:65, num:"-", name:"-"});
SDData.push({index:66, num:"-", name:"-"});
SDData.push({index:67, num:"-", name:"-"});
SDData.push({index:68, num:"-", name:"-"});
SDData.push({index:69, num:"-", name:"-"});
SDData.push({index:70, num:"-", name:"-"});

SDData.push({index:71, num:"-", name:"-"});
SDData.push({index:72, num:"-", name:"-"});
SDData.push({index:73, num:"-", name:"-"});
SDData.push({index:74, num:"-", name:"-"});
SDData.push({index:75, num:"-", name:"-"});
SDData.push({index:76, num:"-", name:"-"});
SDData.push({index:77, num:"-", name:"-"});
SDData.push({index:78, num:"-", name:"-"});
SDData.push({index:79, num:"-", name:"-"});
SDData.push({index:80, num:"-", name:"-"});

SDData.push({index:81, num:"-", name:"-"});
SDData.push({index:82, num:"-", name:"-"});
SDData.push({index:83, num:"-", name:"-"});
SDData.push({index:84, num:"-", name:"-"});
SDData.push({index:85, num:"-", name:"-"});
SDData.push({index:86, num:"-", name:"-"});
SDData.push({index:87, num:"-", name:"-"});
SDData.push({index:88, num:"-", name:"-"});
SDData.push({index:89, num:"-", name:"-"});
SDData.push({index:90, num:"-", name:"-"});

SDData.push({index:91, num:"-", name:"-"});
SDData.push({index:92, num:"-", name:"-"});
SDData.push({index:93, num:"-", name:"-"});
SDData.push({index:94, num:"-", name:"-"});
SDData.push({index:95, num:"-", name:"-"});
SDData.push({index:96, num:"-", name:"-"});
SDData.push({index:97, num:"-", name:"-"});
SDData.push({index:98, num:"-", name:"-"});
SDData.push({index:99, num:"-", name:"-"});

function recreateArray(sort:String, emptyValue:String, descending:Boolean, bottom:Boolean):Void {
	SDData.sortOn(sort,Array.NUMERIC | (descending ? Array.DESCENDING : null));
	switchedIndices = [];
	for (var i in SDData) {
		if (SDData*[emptyValue] == "-") {
			switchedIndices.push(SDData*);
			SDData.splice(Number(i),1);
		}
	}
	switchedIndices.sortOn(sort,Array.NUMERIC | (descending ? Array.DESCENDING : null));
	SDData = !bottom ? SDData.concat(switchedIndices) : switchedIndices.concat(SDData);
}

function displayData():Void {
	for (var i = 0; i<SDData.length; i++) {
		//trace(SDData*.index+"="+SDData*.num);
		trace(SDData*.index+"="+SDData*.name);
	}
}
/*
updateBlanks : Function - Arguments
sort : String - The key to sort on
emptyValue : String - The field to move when they have no value
descending : Boolean - Whether or not to sort descending
bottom : Boolean - Whether or not to place the blank values 
                    at the bottom (start) of the array
*/
recreateArray("name","name",true,false);
// Display the data
displayData();

```

Sorting by index and ascending work out fine  
recreateArray(“index”,“num”,false,false);

But there is some problem with the coding…

**Problem 1**  
By if you we try to sort by index and descending, an error will occur  
recreateArray(“index”,“num”,true,false);

item 50 will appear at the top of the list even if it is an empty value

**Problem 2**  
If I wanna sort by name in ascending order  
recreateArray(“name”,“name”,false,false);

a lot of empty field will appear at the top of the list

**Problem 3**  
descending seem for name seem to work fine,  
recreateArray(“name”,“name”,true,false);

But the empty field at the bottom is kinda randomize, preferably it should be sorted by it index etc…

anyone have any idea where did we go wrong?
