Class

DuList

DuList(objopt)

DuList helps manipulating JS Arrays and After Effects Collections the same way. It is faster than converting a Collection to an Array.
Other specific Adobe Lists in other Applications may be supported later.
The first item of a DuList is always at index 0, the last at index length-1.
Accessor is the DuList.at() method instead of Array.
List length is given by the DuList.length() method instead of a property.
DuList does not reimplement methods to add or remove items, use the source list instead with the DuList.list() property and the original methods (from the Collection instance or Array).
DuList can also be used as an iterator with iterator-like methods like DuList.next().
You can also run a function on each item with do DuList.do().
Constructor

# new DuList(objopt)

Constructs a new DuList object
Parameters:
Name Type Attributes Description
obj any | Array.<any> | Collection | DuList <optional>
If a single obj is passed, it's used as the only element in the list
Properties:
Name Type Description
isCollection boolean true if the original list is an After Effects Collection, false otherwise
isArray boolean true if the original list is an Array, false otherwise

View Source Duik_api_fordoc.jsxinc, line 1462

Members

Boolean

# readonly atEnd

True if the iterator has reached the end.

View Source Duik_api_fordoc.jsxinc, line 1555

Boolean

# readonly atStart

True if the iterator is at the start.

View Source Duik_api_fordoc.jsxinc, line 1547

number

# readonly current

The current index of the iterator.

View Source Duik_api_fordoc.jsxinc, line 1539

Boolean

# readonly isArray

True if the original list is an Array, false otherwise

View Source Duik_api_fordoc.jsxinc, line 1495

Boolean

# readonly isCollection

True if the original list is an After Effects Collection, false otherwise.

View Source Duik_api_fordoc.jsxinc, line 1487

Array | Collection

# readonly list

The original list, an Array or an After Effects Collection.

View Source Duik_api_fordoc.jsxinc, line 1531

Boolean

# readonly valid

True if the iterator is between 0 and length-1. Note that on creation, the iterator is always invalid, but calling DuList.next() moves it to the beginning and makes it valid.

View Source Duik_api_fordoc.jsxinc, line 1563

Methods

# static isAECollection(collection) → {boolean}

Checks if the param is an AE collection or an Array
Parameters:
Name Type Description
collection Array | Collection The list to check

View Source Duik_api_fordoc.jsxinc, line 19027

true if collection is a collection, false if it's an array
boolean

# static isList(list) → {boolean}

Checks if this is an Array or an After Effects collection type or a DuList
Parameters:
Name Type Description
list Array | Collection | DuList The list to check

View Source Duik_api_fordoc.jsxinc, line 2269

true if this is a Cllection or an Array or a DuList
boolean

# at(index) → {object}

Accessor. First item is always 0, last is always length()-1
Does not move the iterator to the index; to move the iterator use DuList.goTo instead.
Parameters:
Name Type Description
index number The index of the item. If it is out of range (negative or > length()-1), returns null

View Source Duik_api_fordoc.jsxinc, line 1596

The item at the given index.
object

# concat(other) → {DuList}

Mergeserge two lists.
This method does not change the existing list, but instead returns a new list.
Parameters:
Name Type Description
other Array | DuList The other list.

View Source Duik_api_fordoc.jsxinc, line 1955

The new list.
DuList

# contains(value, comparisonFunctionopt) → {Boolean}

Checks if the list contains the item
Parameters:
Name Type Attributes Description
value * The value to find. Must be compatible with the == operand if you don't provide a comparison function
comparisonFunction function <optional>
A function which compares two values which returns true if the values are considered the same.

View Source Duik_api_fordoc.jsxinc, line 1644

Boolean

# convertToArray()

Converts the stored list to an Array if it was a Collection.
This enables the modification of the list, but changes in the list will not be reflected in the application (if a layer is removed from the list, it is not removed in the application).

View Source Duik_api_fordoc.jsxinc, line 1816

# do(callBack, reverseopt)

Executes a function on each item of the List
Parameters:
Name Type Attributes Default Description
callBack function The function to execute, which takes one parameter: an item of the list
reverse Boolean <optional>
false Set this to true to iterate from the end.

View Source Duik_api_fordoc.jsxinc, line 2227

# equals(other, comparisonFunctionopt, floatPrecisionopt) → {boolean}

Compares two arrays.
The items in the arrays must be compatible with the == operand if you don't provide a comparison function
Parameters:
Name Type Attributes Default Description
other Array | Collection | DuList The other list
comparisonFunction function <optional>
A function which compares two values which returns true if the values are considered the same.
floatPrecision number <optional>
-1 The precision for (float) number comparison, number of decimals. Set to -1 to not use.

View Source Duik_api_fordoc.jsxinc, line 1729

true if the two arrays contain the same values
boolean

# first() → {*}

Gets the first item in the list

View Source Duik_api_fordoc.jsxinc, line 1807

The first item, null if the list is empty.
*

# getDuplicates() → {DuList}

Returns all duplicated values found in the list

View Source Duik_api_fordoc.jsxinc, line 1668

The duplicated values. An empty list for Ae Collections as they can't have duplicated items.
DuList

# goTo(index) → {*}

Sets the iterator on the index
Parameters:
Name Type Description
index number The index

View Source Duik_api_fordoc.jsxinc, line 2140

The item at index, or null if the index is invalid
*

# goToEnd() → {Object}

Goes to the end of the Iterator

View Source Duik_api_fordoc.jsxinc, line 2169

The item at the end, or null if length is 0
Object

# goToStart() → {Object}

Goes to the start of the Iterator

View Source Duik_api_fordoc.jsxinc, line 2178

The item at the start, or null if length is 0
Object

# hasDuplicates() → {boolean}

Checks if the list has duplicated values

View Source Duik_api_fordoc.jsxinc, line 1654

true if the list has duplicated values. Always false for Ae Collections as they can't have duplicated items.
boolean

# indexOf(value, comparisonFunctionopt) → {number}

Gets the first index of a value, or -1 if not found
Parameters:
Name Type Attributes Description
value * The value to find. Must be compatible with the == operand if you don't provide a comparison function
comparisonFunction function <optional>
A function which compares two values which returns true if the values are considered the same.

View Source Duik_api_fordoc.jsxinc, line 1624

The index of the value, -1 if not found
number

# isEmpty() → {boolean}

Returns true if the list is empty

View Source Duik_api_fordoc.jsxinc, line 1790

boolean

# join(separator) → {string}

Reimplementation of the Array.join function.
For collections, the name of the item will be used, or any other property which makes sense as a string list.
Parameters:
Name Type Description
separator string The separator to use

View Source Duik_api_fordoc.jsxinc, line 2056

The new length of the list.
string

# last() → {*}

Gets the last item in the list

View Source Duik_api_fordoc.jsxinc, line 1798

The last item, null if the list is empty.
*

# length() → {number}

Returns the number of items in the list

View Source Duik_api_fordoc.jsxinc, line 1577

The number of items.
number

# merge(arr) → {number}

Merges the new array to the current list.
Note that to the contrary of the Array.concat() method, this does not create a new list, but modifies the current one in place.
The internal list may be converted to an Array if needed.
Parameters:
Name Type Description
arr Array.<any> The other array.

View Source Duik_api_fordoc.jsxinc, line 2021

The new length of the list.
number

# mergeUnique(arr, comparisonFunctionopt) → {number}

Merges the new array to the current list.
Will only add items if they're not already in the list.
Note that to the contrary of the Array.concat() method, this does not create a new list, but modifies the current one in place.
The internal list may be converted to an Array if needed.
Parameters:
Name Type Attributes Description
arr Array.<any> | DuList The other array/list.
comparisonFunction function <optional>
A function which compares two values which returns true if the values are considered the same.

View Source Duik_api_fordoc.jsxinc, line 2039

The new length of the list.
number

# next() → {any}

Increments the Iterator
Must be called at least once to validate the iterator

View Source Duik_api_fordoc.jsxinc, line 2188

The next item, or null if there isn't
any

# pop() → {any|null}

Removes the last element of the list and returns it.
The internal list may be converted to an Array if needed.

View Source Duik_api_fordoc.jsxinc, line 2120

The last element or null if the list is empty.
any | null

# previous() → {Object}

Decrements the Iterator if it's called while valid is false, goes to the end

View Source Duik_api_fordoc.jsxinc, line 2208

The previous item, or null if there isn't
Object

# push(elements) → {number}

Adds one or more elements to the end of the list and returns the new length of the list.
The internal list may be converted to an Array if needed.
Parameters:
Name Type Description
elements Array.<any> The element(s) to add to the end of the array. You can pass an array or multiple arguments

View Source Duik_api_fordoc.jsxinc, line 1933

The new length of the list.
number

# pushUnique(comparisonFunction, element0) → {number}

Adds one or more elements to the end of the list and returns the new length of the list, only if the value is not already in the list
The internal list may be converted to an Array if needed.
Parameters:
Name Type Description
comparisonFunction function A function which compares two values which returns true if the values are considered the same.
element0 Array.<any> The element(s) to add to the end of the array. You can pass an array or a list of separated arguments

View Source Duik_api_fordoc.jsxinc, line 1973

The new length of the list.
number

# reinitIterator()

Reinits the iterator, i.e. go to index -1 so that the next call to DuList.next returns the first item.

View Source Duik_api_fordoc.jsxinc, line 2131

# remove(index)

Removes the item at the given index. The internal list may be converted to an Array if needed.
The iterator invalidated.
Parameters:
Name Type Description
index number The index.

View Source Duik_api_fordoc.jsxinc, line 1840

# removeAll(value, comparisonFunctionopt) → {number}

Removes all occurences of the value from the list. The value must be checkable with the == operator if no comparisonFunction is provided.
The internal list may be converted to an Array if needed.
The iterator invalidated.
Parameters:
Name Type Attributes Description
value number The value.
comparisonFunction function <optional>
A function which compares two values which returns true if the values are considered the same.

View Source Duik_api_fordoc.jsxinc, line 1880

The number of items removed.
number

# removeDuplicates(comparisonFunctionopt) → {DuList}

Removes all duplicated values from the list, and returns them.
The internal list may be converted to an Array if needed.
The iterator invalidated.
Parameters:
Name Type Attributes Description
comparisonFunction function <optional>
A function which compares two values which returns true if the values are considered the same.

View Source Duik_api_fordoc.jsxinc, line 1693

The duplicated (and removed) values. An empty list for Ae Collections as they can't have duplicated items.
DuList

# removeOne(value, comparisonFunctionopt)

Removes the first value from the list. The value must be checkable with the == operator if no comparisonFunction is provided.
The internal list may be converted to an Array if needed.
The iterator invalidated.
Parameters:
Name Type Attributes Description
value any The value.
comparisonFunction function <optional>
A function which compares two values which returns true if the values are considered the same.

View Source Duik_api_fordoc.jsxinc, line 1859

# replace(previousValue, newValue, comparisonFunctionopt) → {number}

Replaces all occurences of a value with another value.
The internal list may be converted to an Array if needed.
Parameters:
Name Type Attributes Description
previousValue any The current value
newValue any The new value
comparisonFunction function <optional>
A function which compares two values which returns true if the values are considered the same.

View Source Duik_api_fordoc.jsxinc, line 2095

The number of occurences which were updated.
number

# sort(compareFunction) → {Array}

Reimplements the Array.sort() method.
The internal list may be converted to an Array if needed.
The iterator is invalidated.
Parameters:
Name Type Description
compareFunction function Specifies a function that defines the sort order. If omitted, the array elements are converted to strings, then sorted according to each character's Unicode code point value.

View Source Duik_api_fordoc.jsxinc, line 1908

The sorted array. Note that the array is sorted in place, and no copy is made.
Array