"Voetleuce en fênsievry" <ca******@websurfer.co.za> wrote in message
news:f0**************************@posting.google.c om...
<snip>
Thanks for everyone's answers -- I'll definitely give it a try.
<snip>
This is an example using some of the methods suggested. I did make one
or two changes; lasse's split call used a space character, I changed
that to a regular expression, Dr John Stockton's function requires
sorted input so I added a call to the array sort method (if the input is
pre-sorted then this is not needed and can be removed). On the subject
of sorting, Dr John Stockton's function always produces sorted output,
Lasse's will produce sorted output if the input is sorted but a call to
the array sort method could be added (either just before the final join
or following the split). My - for(var prop in seenTowns) - method cannot
guarantee the order of the output.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<script type="text/javascript">
function uniqueTownsLRN(frm){
var towns = frm.elements['inputText'].value;
var arrTowns = towns.split(/\s+/);
var arrNewTowns = [];
var seenTowns = {};
for(var i=0;i<arrTowns.length;i++) {
if (!seenTowns[arrTowns[i]]) {
seenTowns[arrTowns[i]]=true;
arrNewTowns.push(arrTowns[i]);
}
}
frm.elements['outputText'].value = arrNewTowns.join(" ");
}
function uniqueTownsDJS(frm){
var towns = frm.elements['inputText'].value;
var arrTowns = towns.split(/\s+/).sort(), ans = "", Had = "";
for(var i=0;i < arrTowns.length;i++)
if( Had != (Had=arrTowns[i]) )ans += Had + " ";
frm.elements['outputText'].value = ans;
}
function uniqueTownsRC(frm){
var towns = frm.elements['inputText'].value;
var st = '', seenTowns = {}, arrTowns = towns.split(/\s+/);
for(var c = arrTowns.length;c--;){
seenTowns[arrTowns[c]] = true;
}
for(var prop in seenTowns){
st += prop+' ';
}
frm.elements['outputText'].value = st;
}
</script>
</head>
<body>
<form name="testForm" action="" method="get"
onsubmit="return subTests()">
<textarea name="inputText" cols="70" rows="8">St_Yves St_George_s_Mall
Aberdeen Aberdeen New_York Cape_Town Aberdeen Edinburgh
Edinburgh Inverness St_Yves St_George_s_Mall New_York
Aberdeen Aberdeen New_York Cape_Town Aberdeen Edinburgh
Edinburgh Inverness St_Yves St_George_s_Mall New_York
Cape_Town New_York Cape_Town</textarea><br>
<input type="button" value="Lasse Reichstein Nielsen Version"
onclick="uniqueTownsLRN(this.form);"><br>
<input type="button" value="Dr John Stockton Version"
onclick="uniqueTownsDJS(this.form);"><br>
<input type="button" value="Richard Cornford Version"
onclick="uniqueTownsRC(this.form);"><br>
<textarea name="outputText" cols="70" rows="8"></textarea>
</form>
</body>
</html>
Richard.