ListUnique: Difference between revisions

From Second Life Wiki
Jump to navigation Jump to search
New page: {{LSL Header}} __NOTOC__ <div id="box"> == Function: list ListUniq(list {{LSL Param|lAll }}; == <div style="padding: 0.5em;"> Given a list of elements, strips out duplicates in tha...
 
Stickman Ingmann (talk | contribs)
++i is faster than i++. Just a little.
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{LSL Header}} __NOTOC__
{{LSL Header}} __NOTOC__
<div id="box">
<div id="box">
== Function: [[list]] ListUniq([[list]] {{LSL Param|lAll }}; ==
== Function: [[list]] ListUnique([[list]] {{LSL Param|lAll) }}; ==
<div style="padding: 0.5em;">
<div style="padding: 0.5em;">
Given a list of elements, strips out duplicates in that list.
Given a list of elements, strips out any duplicates in that list, and returns the de-duped list.
 
See also: [[List|Lists]]
 


<lsl>
<lsl>
list ListUniq( list lAll ) {
list ListUnique( list lAll ) {
     integer i;
     integer i;
     list lFiltered = llList2List(lAll, 0, 0);
     list lFiltered = llList2List(lAll, 0, 0);
     integer iAll = llGetListLength( lAll );
     integer iAll = llGetListLength( lAll );
     for (i = 1; i < iAll; i++) {
     for (i = 1; i < iAll; ++i) {
         if ( llListFindList(lFiltered, llList2List(lAll, i, i) ) == -1 ) {
         if ( llListFindList(lFiltered, llList2List(lAll, i, i) ) == -1 ) {
             lFiltered += llList2List(lAll, i, i);
             lFiltered += llList2List(lAll, i, i);
Line 23: Line 26:
Example:<br />
Example:<br />


list mylist = ListUniq(["A", "A", "B", "C", "C", "B"])
list mylist = ListUnique(["A", "A", "B", "C", "C", "B"])


would return the list:
would return the list:
Line 31: Line 34:


</div>
</div>
Originated in a November 2004 thread led by Chromal Brodsky in the SL Scripting Forum. http://forums.secondlife.com/showthread.php?t=28137




{{LSLC|Examples|ListXUniq}}
{{LSLC|Examples|ListUnique}}

Revision as of 17:29, 14 August 2008

Function: list ListUnique(list lAll);

Given a list of elements, strips out any duplicates in that list, and returns the de-duped list.

See also: Lists


<lsl> list ListUnique( list lAll ) {

   integer i;
   list lFiltered = llList2List(lAll, 0, 0);
   integer iAll = llGetListLength( lAll );
   for (i = 1; i < iAll; ++i) {
       if ( llListFindList(lFiltered, llList2List(lAll, i, i) ) == -1 ) {
           lFiltered += llList2List(lAll, i, i);
       }
   }
   return lFiltered;

}

</lsl>


Example:

list mylist = ListUnique(["A", "A", "B", "C", "C", "B"])

would return the list:

["A", "B", "C"]


Originated in a November 2004 thread led by Chromal Brodsky in the SL Scripting Forum. http://forums.secondlife.com/showthread.php?t=28137